【问题标题】:Timing a function in microseconds以微秒为单位计时功能
【发布时间】:2012-03-12 05:43:08
【问题描述】:

大家好,我正在尝试以微秒为单位编写一些搜索函数的时间,它需要足够长的时间才能显示 2 个有效数字。我写了这段代码来计时我的搜索功能,但它似乎太快了。我总是得到 0 微秒,除非我运行搜索 5 次,然后我得到 1,000,000 微秒。我想知道我是否做错了以微秒为单位的时间,或者是否有某种格式化函数可以用来强制它显示两个 sig figs?

clock_t start = clock();
index = sequentialSearch.Sequential(TO_SEARCH);
index = sequentialSearch.Sequential(TO_SEARCH);
clock_t stop = clock();
cout << "number found at index " << index << endl;
int time = (stop - start)/CLOCKS_PER_SEC;
time = time * SEC_TO_MICRO;
cout << "time to search = " << time<< endl;

【问题讨论】:

  • 通常你会打更多的电话并取平均值。
  • 是的,我计划稍后添加,现在我只是想让它工作。
  • 通常的clock() 分辨率大约是 10 毫秒,所以这可能还不够。如果您需要更高的精度,请查看&lt;chrono&gt; 的高分辨率时钟。

标签: c++ ctime


【解决方案1】:

您在这一行使用整数除法:

int time = (stop - start)/CLOCKS_PER_SEC;

我建议使用doublefloat 类型,您可能需要转换除法的组件。

【讨论】:

  • 是的,解决了它。我应该看到的。感谢您指出。
【解决方案2】:

假设您在 Windows 平台上使用 QueryPerformanceCounter 和 QueryPerformanceFrequency

这里是 ms KB How To Use QueryPerformanceCounter to Time Code的链接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 2012-01-12
    • 2016-02-14
    • 2010-09-21
    相关资源
    最近更新 更多