据我所知,Windows 上最好的方法是使用QueryPerformanceCounter和QueryPerformanceFrequency。
QueryPerformanceCounter(LARGE_INTEGER*)将性能计数器的值放入传递的 LARGE_INTEGER 中。
QueryPerformanceFrequency(LARGE_INTEGER*)将性能计数器递增的频率放入传递的 LARGE_INTEGER 中。
然后,您可以通过在执行开始时记录计数器,然后在执行完成时记录计数器来找到执行时间。从末尾减去开始以获得计数器的变化,然后除以频率以获得以秒为单位的时间。
LARGE_INTEGER start, finish, freq;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
// Do something
QueryPerformanceCounter(&finish);
std::cout << "Execution took "
<< ((finish.QuadPart - start.QuadPart) / (double)freq.QuadPart) << std::endl;
Run Code Online (Sandbox Code Playgroud)