首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clock()精度

clock()精度
EN

Stack Overflow用户
提问于 2011-09-03 00:54:39
回答 1查看 1.2K关注 0票数 1

我看过很多关于使用clock()函数来确定程序中运行时间的帖子,代码类似于:

代码语言:javascript
复制
start_time = clock();

//code to be timed
.
.
.

end_time = clock();
elapsed_time = (end_time - start_time) / CLOCKS_PER_SEC;

CLOCKS_PER_SEC的值几乎肯定不是每秒的实际时钟节拍数,所以我对结果有点谨慎。不用担心线程和I/O,clock()函数的输出是否以某种方式进行了缩放,以便这个除法生成正确的挂钟时间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-03 01:03:55

你的问题的答案是肯定的。

本例中的clock()指的是挂钟,而不是CPU时钟,因此乍一看可能会产生误导。对于我见过的所有机器和编译器,它返回以毫秒为单位的时间,因为我从未见过CLOCKS_PER_SEC不是1000的情况。因此,clock()的精度被限制在毫秒,并且精度通常略低。

如果您对实际周期感兴趣,这可能很难获得。CPU指令将允许您访问rdtsc启动时的数字“伪”-cycles。在较旧的系统(如Intel Core 2)上,此数字通常与实际CPU频率相同。但在较新的系统上,情况并非如此。

要获得比clock()更精确的计时器,您需要使用硬件性能计数器-这是特定于操作系统的。这些是使用最后一段中的'rdtsc‘指令在内部实现的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7286787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档