#include <stdio.h>#include <time.h>#include <stdlib.h>int main(){time_t start, end;int i;start = time(NULL);for (i = 1000000; i > 0; --i);end = time(NULL);printf ("%.2f\n", difftime(end, start));return 0;}
3 回答

米脂
TA貢獻1836條經驗 獲得超3個贊
電腦cpu的主頻太高,一百萬次空循環的執行時間太短,所以,difftime(返回時間差)的返回值非常非常小,比如他返回的是0.0002的話,實際上不是0,但是因你輸出時,只保留兩位小數,后面的不是0的值也沒輸出,所以你保留兩位小數輸出的話,肯定是0.00
另外,difftime的返回值是64位整數,太小的話,肯定也是零,說到底還是因為時間差太小的造成的
循環次數加大一些,現在cpu主頻都是1-2g的,你設1億次或者10億應該才能看到差距
for (i = 100000000; i > 0; --i);
改成1億次。

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
說到底,time_t是一個整數,單位是秒,你的運算耗時不到一秒,當然輸出0了,雖然difftime的返回值是double新類型的,但它的單位也是秒,所以difftime不可能返回有小數的值,也就是說小數部分都是0
- 3 回答
- 0 關注
- 767 瀏覽
添加回答
舉報
0/150
提交
取消