링크 : 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();
출력 결과
설명을 드리자면 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 |