快速时间函数C/C++

Seb*_*ebi 5 c c++ performance time

我目前正在使用ctime库中的时间.还有更快的选择吗?

time_t start_time, elapsed_time;

for(int i = 0; i < n; i++) {
    start_time = time(NULL);
    /// optimized code
    if(condition_met())
    {
       elapsed_time = time(NULL) - start_time;
    } else continue;
}
Run Code Online (Sandbox Code Playgroud)

时间(NULL)只是不够快.

cmh*_*cmh 8

您似乎只想测量经过的时间(并且不关心绝对时间).测量经过时间的最快方法之一(如果您使用的是x86)是读取rdtsc计数器.在mvsc ++中,这可以通过以下方式实现:

#include <intrin.h>
unsigned __int64 rdtsc(void)
{
    return __rdtsc();
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意在链接的维基百科条目中描述的在多核/超线程系统上使用此方法的注意事项.对于Windows系统,[推荐替代方案](http://msdn.microsoft.com/en-us/library/ee417693%28VS.85%29.aspx)使用`QueryPerformanceCounter`和`QueryPerformanceFrequency`. (2认同)
  • 但是,您是否愿意解释如何使用它来测量经过的时间? (2认同)