하드웨어의 발전으로 보다 정밀한 시간을 측정할 수 있게 되었고, 이를 위해 C++11에서는 chrono를 제공합니다. chrono를 이용하여 측정한 시간값의 정밀도는 나노(nano, 0.000000001)초라고 합니다. 아래는 코드는 어떠한 연산에 대한 소요 시간을 측정하는 경우로써 chrono를 사용한 코드입니다.
#include "stdafx.h" #include#include using namespace std; using namespace chrono; int _tmain(int argc, _TCHAR* argv[]) { system_clock::time_point tp1 = system_clock::now(); double v = 0; for(long i = 0; i < 100000000; i++) { v += 0.1; } system_clock::time_point tp2 = system_clock::now(); nanoseconds t = tp2 - tp1; cout << "nanoseconds: " << t.count() << endl; cout << "seconds: " << t.count() / 1000000000.0 << endl; return 0; }
실행 시간을 측정한 연산에 대한 코드는 12번 ~ 15번입니다. 이 코드 부분의 앞뒤로 chrono를 이용하여 시간을 측정하고 있습니다. 측정된 시간의 차이(17번 코드)를 통해 연산에 소요되는 시간을 알 수 있습니다. 시간 차이에 대한 단위는 nano이며 이를 초(second)로 변환하기 위해 21번 코드처럼 1000000000값으로 나누어 출력하고 있습니다.