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; }
|
更多的使用方法可以參考