chrono는 경과 시간을 계산할 때 다양한 시간 타입으로 계산할 수 있습니다.
이전 회의 예제의 경우는 초 단위로 표시하되 소수점까지 표시할 수 있었습니다.
그런데 보통은 소수점이 나오는 결과 값보다는 정수로 나오는 값을 사용하는 경우가 많을 것입니다.
chrono에서는 경과 시간을 나타내는 클래스는 duration입니다.
duration은 6개의 시간 단위를 지원합니다.
nanoseconds - 10억분의 1초
microseconds - 100만분의 1초
milliseconds - 1000분의 1초
seconds – 초
minutes - 분
hours – 시간
이전 회의 예제를 사용하여 이번에는 다양한 시간 단위로 경과 시간을 표시해 보겠습니다.
#include <boost/chrono.hpp>
#include <cmath>
void Test()
{
for ( long i = 0; i < 10000000; ++i )
{
std::sqrt( 123.456L );
}
}
int main()
{
boost::chrono::system_clock::time_point StartTime = boost::chrono::system_clock::now();
Test();
boost::chrono::system_clock::time_point EndTime = boost::chrono::system_clock::now();
boost::chrono::duration<double> DefaultSec = EndTime - StartTime;
boost::chrono::nanoseconds nano = EndTime - StartTime;
boost::chrono::microseconds micro = boost::chrono::duration_cast<boost::chrono::microseconds>(EndTime - StartTime);
boost::chrono::milliseconds mill = boost::chrono::duration_cast<boost::chrono::milliseconds>(EndTime - StartTime);
boost::chrono::seconds sec = boost::chrono::duration_cast<boost::chrono::seconds>(EndTime - StartTime);
boost::chrono::minutes min = boost::chrono::duration_cast<boost::chrono::minutes>(EndTime - StartTime);
boost::chrono::hours hour = boost::chrono::duration_cast<boost::chrono::hours>(EndTime - StartTime);
std::cout << "Test() 함수를 수행하는 걸린 시간 : " << DefaultSec.count() << " default" << std::endl;
std::cout << "Test() 함수를 수행하는 걸린 시간 : " << nano.count() << " nanoseconds" << std::endl;
std::cout << "Test() 함수를 수행하는 걸린 시간 : " << micro.count() << " microseconds" << std::endl;
std::cout << "Test() 함수를 수행하는 걸린 시간 : " << mill.count() << " milliseconds" << std::endl;
std::cout << "Test() 함수를 수행하는 걸린 시간 : " << sec.count() << " seconds" << std::endl;
std::cout << "Test() 함수를 수행하는 걸린 시간 : " << min.count() << " minutes" << std::endl;
std::cout << "Test() 함수를 수행하는 걸린 시간 : " << hour.count() << " hour" << std::endl;
return 0;
}
< 결과 >
ps : 네임스페이스를 다 적다보니 코드 가독성이 좀 떨어질텐데 양해바랍니다^^;
'C++0x' 카테고리의 다른 글
| [미리 보는 C++11] 7. chrono - 4 (0) | 2012/02/20 |
|---|---|
| [미리 보는 C++11] 7. chrono - 3 (2) | 2012/01/19 |
| [미리 보는 C++11] 7. chrono - 2 (0) | 2011/12/07 |
| [미리 보는 C++11] 7. chrono - 1 (0) | 2011/11/16 |
| [미리 보는 C++11] 6. Boost 라이브러리 설치 (0) | 2011/10/12 |
| [미리 보는 C++11] 5. enum (0) | 2011/10/06 |




댓글을 달아 주세요