Wednesday, March 6, 2024

【C++】高精度的時間量測方法

很多場合會需要進行運算時間的量測,而傳統的 clock 在時間精度上卻相當悲劇,在 15ms 內的時間幾乎很難正確評估。C++ 提供了一個方法,能讓時間量測變得相當精準。

 

std::chrono::high_resolution_clock

C++ 的 chrono 提供了一個方法,std::chrono::high_resolution_clock,其中包含了類別宣告 time_point,方法 now(),並且透過 std::chrono::duration 作為差異的銜接。底下為使用範例:

 

Sample
  1. #include <chrono>
  2. #include <iostream>
  3. #include <thread>
  4.  
  5. int main(int argc, char* argv[])
  6. {
  7. std::chrono::high_resolution_clock::time_point t;
  8. std::chrono::duration<double, std::milli> duration;
  9.  
  10. t = std::chrono::high_resolution_clock::now();
  11. std::this_thread::sleep_for(std::chrono::milliseconds(10));
  12. duration = std::chrono::high_resolution_clock::now() - t;
  13.  
  14. printf("This take %f ms.\n", duration.count());
  15. system("pause");
  16. }

程式執行應該會跑出下面的結果:

This take 15.743700 ms.

 

No comments:

Post a Comment

熱門文章