以微秒为单位计时功能
嘿家伙我想花时间在微秒内编写一些搜索函数,它需要花费足够长的时间才能显示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;
您正在使用整数除法在这条线:
int time = (stop - start)/CLOCKS_PER_SEC;
我建议使用double
或float
类型,你可能需要转换师的组成部分。
是的,解决了它。我应该看到这一点。感谢您指出。 – Jonathan 2012-02-21 22:00:20
使用QueryPerformanceCounter和QueryPerformanceFrequency的,假设你在Windows平台上
感谢您的资源。 – Jonathan 2012-02-21 22:00:47
的链接通常你会做更多的电话和取平均值。 – 2012-02-21 21:50:45
是的,我打算在后面补充说,现在我只是想让它工作。 – Jonathan 2012-02-21 21:55:49
虽然通常的clock()分辨率大概是10ms,但这可能不够。如果您需要更高的精度,请查看''的高分辨率时钟。 –
2012-02-21 22:03:30