0%

Time Library in C++11

chrono原先是來自於boost,現在進入C++11 Standard了。
鑽簡單的範例就是用來作高精密度的Timer使用。原先在Windows有QueryPerformanceCounter的函數,可以精密到nanoseconds,在Liunx/BSD很難找到類似的解法,不過C++11把這納入標準了,不必花太多功夫。
以下是一個範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
void f()
{
this_thread::sleep_for(chrono::seconds(1));
}

int main()
{
auto t1 = chrono::high_resolution_clock::now();
f();
auto t2 = chrono::high_resolution_clock::now();
std::cout << "f() took "
<< chrono::duration_cast<chrono::seconds>(t2 - t1).count()
<< " seconds\n"
<< chrono::duration_cast<chrono::milliseconds>(t2 - t1).count()
<< " milliseconds\n"
<< chrono::duration_cast<chrono::nanoseconds>(t2 - t1).count()
<< " nanoseconds\n";
return 0;
}

更多的使用方法可以參考