gpt4 book ai didi

c - 为什么 C clock() 返回 0

转载 作者:IT王子 更新时间:2023-10-29 00:16:17 25 4
gpt4 key购买 nike

我有这样的东西:

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 clockCLOCKS_PER_SEC 定义单位为 1000000(统一为 1 微秒)。

http://pubs.opengroup.org/onlinepubs/009604499/functions/clock.html

要测量 x86/x64 中的时钟周期,您可以使用内联汇编来检索 CPU 时间戳计数器寄存器的时钟计数 rdtsc .

关于c - 为什么 C clock() 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9871071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com