我很好奇C ++中是否有用于测量执行时间的内置函数? 我目前正在使用Windows。在Linux中它很容易......
答案 0 :(得分:4)
据我所知,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;
答案 1 :(得分:2)
在Windows下也很容易 - 事实上它在<ctime>
中定义的std::clock, d上的功能相同
答案 2 :(得分:2)
您可以使用Windows API函数GetTickCount()并比较开始和结束时的值。分辨率在16毫秒的球场。如果由于某种原因您需要更细粒度的时间,则需要查看QueryPerformanceCounter。
答案 3 :(得分:1)
C ++没有用于高粒度测量代码执行时间的内置函数,您必须使用特定于平台的代码。对于Windows,请尝试QueryPerformanceCounter:http://msdn.microsoft.com/en-us/library/ms644904(VS.85).aspx
答案 4 :(得分:1)
您应该使用的功能取决于您需要的计时器的分辨率。其中一些给出了10ms的分辨率。这些功能更容易使用。其他人需要更多的工作,但提供更高的分辨率(并且可能会在某些环境中引起一些麻烦。但是你的开发机器可能工作正常)。
http://www.geisswerks.com/ryan/FAQS/timing.html
本文提到:
答案 5 :(得分:0)