为什么C Clock()返回0
我有这样的事情:
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说:clock
“ 从实现定义的仅与程序调用有关的时代开始,就将 返回到程序所使用的处理器时间。”
如果在两次连续clock
调用之间,您编程的时间少于该clock
函数的一个单位的时间,则可以得到0
。
POSIX clock
将统一定义CLOCKS_PER_SEC
为1000000(然后统一为1微秒)。
http://pubs.opengroup.org/onlinepubs/009604499/functions/clock.html
要测量x86 / x64中的时钟周期,可以使用内联汇编来获取CPU时间戳计数器寄存器的时钟计数rdtsc
。
以上是 为什么C Clock()返回0 的全部内容, 来源链接: utcz.com/qa/431027.html