我有这样的事情:
clock_t start, end;
start=clock();
something_else();
end=clock();
printf("\nClock cycles are: %d - %d\n",start,end);
我总是得到输出“时钟周期是:0 - 0”
知道为什么会发生这种情况吗?
(只是为了提供一些细节,something_else()函数使用蒙哥马利表示法执行从左到右的求幂,而且我不确定something_else()函数确实需要一些不可忽略的时间。)
这是在 Linux 上。 uname -a 的结果是:
Linux snowy.*****.ac.uk 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64 x86_64 x86_64 GNU/Linux
clock
函数不测量 CPU 时钟周期。
C says clock
“返回实现的最佳近似到处理器
自实现定义的时代开始以来程序使用的时间相关
仅适用于程序调用。”
如果在两个连续的clock
调用你的程序花费的时间比一个单位的时间少clock
函数,你可以得到0
.
POSIX clock
定义与的统一CLOCKS_PER_SEC
为 1000000(单位为 1 微秒)。
http://pubs.opengroup.org/onlinepubs/009604499/functions/clock.html http://pubs.opengroup.org/onlinepubs/009604499/functions/clock.html
要测量 x86/x64 中的时钟周期,您可以使用内联汇编来检索 CPU 时间戳计数器寄存器的时钟计数rdtsc
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)