我很好奇C++中是否有一个内置的函数来测量执行时间?我现在用的是Windows。在Linux中,这非常简单……
发布于 2010-08-04 04:06:02
据我所知,在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;发布于 2010-08-04 04:01:57
这在Windows下也很简单--事实上,在<ctime>中定义的两个std::clock, d上的函数都是相同的
发布于 2010-08-04 04:05:28
您可以使用Windows API函数GetTickCount()比较开始和结束时的值。分辨率在16ms的范围内。如果出于某种原因,您需要更细粒度的计时,则需要考虑QueryPerformanceCounter。
https://stackoverflow.com/questions/3400309
复制相似问题