【问题标题】:Measuring sub-second elapsed time of native C++ on Windows platform在 Windows 平台上测量原生 C++ 的亚秒级经过时间
【发布时间】:2012-11-25 23:13:04
【问题描述】:

在 Windows 平台上测量本机 C++ 代码的亚秒级运行时间的好方法是什么(我正在使用 Windows Vista,Visual Studio 2010)

我尝试过使用

#include <ctime>

int main()
{    
    clock_t start = clock();
    ... some code
    clock_t end = clock();
    double cpu_time = static_cast<double>(end - start)/CLOCKS_PER_SEC;
}

cpu_time 始终是0

谢谢!

【问题讨论】:

  • 您可以尝试将some code 放在一个循环中然后除以吗?另外,尝试打印出endstart,看看它们是否完全不同。
  • @chris 我有 Windows 7 和 Visual Studio 2012 的副本,将尝试
  • 对于较旧的工具集,还有Boost.Chrono
  • @newprint,如果你还在尝试使用/理解它,我记得不久前给出了一个计时器示例here

标签: c++ cpu-usage timing


【解决方案1】:

您可以使用QueryPerformanceFrequencyQueryPerformanceCounter WinAPI 函数。 Example

【讨论】:

    【解决方案2】:

    您的代码均有效且有效。如果您尝试为特定代码的执行计时,您应该按照 Xymotech 的建议通过循环运行它。主要原因是:

    • 您的代码 sn-p 将执行得非常快。在某些情况下,执行 计时器的开始、代码-sn-p 和结束是相同的时钟滴答声。 这将导致startend 保持相同的值,从而导致 cpu_time 等于零。

    但是,还有一个额外的好处是能够计算多次迭代的平均执行时间

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 2010-10-11
      • 1970-01-01
      相关资源
      最近更新 更多