본문 바로가기

프로그램언어/boost

[ Boost ] Boost.array 관련 예제 만들어보기

Boost 목록
 

링크 : http://tingcobell.tistory.com/295



링크 : http://tingcobell.tistory.com/302

시간관련 측정함수인 boost::timer을 이용하여 결과를 도출하려고 하였으나 제가 사용을 못하는건지 아니면 이녀석에 대해 제가 정확히 파악을 하지 못하는건지 잘 모르겠지만, 결과가 0으로만 산출되는 바람에 제가 주로 사용하고 있는 apr라이브러리를 이용하여 시간을 측정하였습니다.

관련된 Reference에 정의된 내용을 가지고 예제를 만들어봤습니다.

#include <iostream>

#include <boost/array.hpp>

#include <vector>

//#include <boost/timer.hpp>

#include <apr-1/apr_time.h>


#define MAX_COUNT 1000

int main()

{


        boost::array<int, MAX_COUNT> array_test;

        std::vector<int> vector_test;


        apr_time_t startTimer, endTimer;


        for( int i = 0; i < MAX_COUNT; i++ )

        {

                array_test[i] = i;

        }


        for( int i = 0 ;i < MAX_COUNT; i++ )

        {

                vector_test.push_back( i );

        }


        int nTotal = 0;


        startTimer = apr_time_now();

        for( boost::array<int, MAX_COUNT>::iterator itor = array_test.begin(); itor != array_test.end(); itor++ )

        {

                nTotal += *itor;

        }

        endTimer = apr_time_now();


        std::cout << " nTotal : " << nTotal<< std::endl;

        std::cout << " sec Timer : " << endTimer - startTimer << std::endl;


        nTotal = 0;


        startTimer = apr_time_now();

        for( int i = 0 ;i < MAX_COUNT; i++ )

        {

                nTotal += array_test[i];

        }

        endTimer = apr_time_now();



        std::cout << " nTotal : " << nTotal<< std::endl;

        std::cout << " sec Timer : " << endTimer - startTimer << std::endl;


        nTotal = 0;

        startTimer = apr_time_now();

        for( std::vector<int>::iterator itor = vector_test.begin(); itor != vector_test.end(); itor++ )

        {

                nTotal += *itor;

        }

        endTimer = apr_time_now();


        std::cout << " nTotal : " << nTotal<< std::endl;
        std::cout << " sec Timer : " << endTimer - startTimer << std::endl;
        vector_test.clear();
        return 0;
}

 
출력 결과

설명을 드리자면 boost로 정의된 array선언을 이용하여 간단한 산술을 적용한 예 입니다.  
비교대상
1. Reference에 정의된 boost::array::iterator 사용
2. boost::array 사용에서 직접 산술연산. 
3. 표준 std::vector을 이용한 산술연산

3가지 모태를 가지고 테스트를 하였습니다. 결과 상으로는 boost::array::iterator가 조금더 좋은 결과가 나왔지만, 처음에 테스트 할때는 직접 접근하여 산술 연산이 조금더 결과가 좋았습니다.  이것으로만 판단한다면 표준 vector보다는  boost::array::iterator가 조금더 낳은 결과를 볼 수 있습니다.

 

'프로그램언어 > boost' 카테고리의 다른 글

[ Boost ] Boost::thread #2  (0) 2011.05.11
[ Boost ] Boost.thread #1  (2) 2011.05.03
[ Boost ] Boost.Array Description  (0) 2011.05.03
[ Boost ] Ref. array.hpp  (4) 2011.05.02
[ Boost ] Boost.Array 정리  (0) 2011.05.02