找到c ++执行时间

时间:2010-08-03 19:59:06

标签: c++

我很好奇C ++中是否有用于测量执行时间的内置函数? 我目前正在使用Windows。在Linux中它很容易......

6 个答案:

答案 0 :(得分:4)

据我所知,Windows上的最佳方法是使用QueryPerformanceCounterQueryPerformanceFrequency

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

本文提到:

  • timeGetTime
  • RDTSC(处理器功能,而非OS功能)
  • QueryPerformanceCounter的

答案 5 :(得分:0)

C ++适用于许多平台。为什么不使用也适用于许多平台的东西,例如Boost库。

查看Boost Timer Library

的文档

我相信它是一个仅限标题的库,这意味着它很容易设置和使用......