为什么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

回到顶部