11 int main()
12
13 {
14 clock_t start;
15 clock_t end;
16
17 start = clock();
18 sleep(10);
19 end = clock();
20
21 double total;
22 total = (double)((end - start) / CLOCKS_PER_SEC);
23 printf("total = %f\n",total);
24 }
25
这样写代码居然输出是 0.000000 把老板的 FPGA 速度测错了,我觉得我老板会降低对我的印象了 唉
1
zmj1316 2019-04-04 20:19:55 +08:00 via Android
🤣不自己先试一下的吗
|
2
jackmod 2019-04-04 20:22:42 +08:00
位置不对,要这样写:
(double)(end - start) / CLOCKS_PER_SEC (end - start) 是整数,先转换它,而不是先除以一个巨大的数字再转换。 |
3
HFcbyqP0iVO5KM05 2019-04-04 20:24:21 +08:00
sleep 也有可能被 interrupt 导致提前返回,此时返回的是剩余的时间
|
4
jackmod 2019-04-04 20:34:25 +08:00 1
然而我用 clock 得到的结果也不对(以前似乎遇到过这个问题来着),考虑换用 clock_gettime 吧。
https://linux.die.net/man/3/clock_gettime https://gist.github.com/pfigue/9ce8a2c0b14a2542acd7 |
5
ryd994 2019-04-05 00:35:08 +08:00 via Android 1
本来就应该用 gettime 这种情况下应该用 CLOCK_MONOTONIC
其实你的问题我觉得 2 楼已经讲清楚了 应该用浮点除法而不是整数除 |