
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 Apr 4, 2019 via Android 不自己先试一下的吗 |
2 jackmod Apr 4, 2019 位置不对,要这样写: (double)(end - start) / CLOCKS_PER_SEC (end - start) 是整数,先转换它,而不是先除以一个巨大的数字再转换。 |
3 HFcbyqP0iVO5KM05 Apr 4, 2019 sleep 也有可能被 interrupt 导致提前返回,此时返回的是剩余的时间 |
4 jackmod Apr 4, 2019 然而我用 clock 得到的结果也不对(以前似乎遇到过这个问题来着),考虑换用 clock_gettime 吧。 https://linux.die.net/man/3/clock_gettime https://gist.github.com/pfigue/9ce8a2c0b14a2542acd7 |
5 ryd994 Apr 5, 2019 via Android 本来就应该用 gettime 这种情况下应该用 CLOCK_MONOTONIC 其实你的问题我觉得 2 楼已经讲清楚了 应该用浮点除法而不是整数除 |