【发布时间】:2016-09-13 08:30:18
【问题描述】:
我正在尝试在 linux 下使用 clock() 测量 C 中的执行时间:
#include <time.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char const* argv[])
{
clock_t begin, end;
begin = clock();
sleep(2);
end = clock();
double spent = ((double)(end-begin)) / CLOCKS_PER_SEC;
printf("%ld %ld, spent: %f\n", begin, end, spent);
return 0;
}
输出是:
1254 1296, spent: 0.000042
文档说将时钟时间除以 CLOCKS_PER_SEC 以获得以秒为单位的执行时间,但这对于 2 秒 sleep 来说似乎非常不正确。
有什么问题?
【问题讨论】:
-
%f用于double,仅供参考。 -
@SouravGhosh 是的,就像变量 time_spent 一样。
-
@SouravGhosh,C 可变参数函数会自动执行某些提升。其中之一是从浮动到双。将 %f 用于浮点数并不是最优的,但也不是完全错误。带有 %d 的打印字符也是如此。
-
@ShacharShemesh 你错过了前两个格式说明符吗?
-
@SouravGhosh,我显然不明白你的意思。我以为是他将 %f 用于浮点类型,但他没有。他用两个 %ld 打印两个有符号的 long(应该如此),用 %f 打印一个 double (再次正确)。我不明白您的预订是什么。