2024年3月6日 星期三

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

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

 

std::chrono::high_resolution_clock

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

 

Sample
#include <chrono>
#include <iostream>
#include <thread>

int main(int argc, char* argv[])
{
	std::chrono::high_resolution_clock::time_point  t;
	std::chrono::duration<double, std::milli> duration;

	t = std::chrono::high_resolution_clock::now();
	std::this_thread::sleep_for(std::chrono::milliseconds(10));
	duration = std::chrono::high_resolution_clock::now() - t;

	printf("This take %f ms.\n", duration.count());
	system("pause");
}

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

This take 15.743700 ms.

 

沒有留言:

張貼留言

熱門文章