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; }
倚天杖
浏览 725回答 3
3回答
米脂
电脑cpu的主频太高,一百万次空循环的执行时间太短,所以,difftime(返回时间差)的返回值非常非常小,比如他返回的是0.0002的话,实际上不是0,但是因你输出时,只保留两位小数,后面的不是0的值也没输出,所以你保留两位小数输出的话,肯定是0.00另外,difftime的返回值是64位整数,太小的话,肯定也是零,说到底还是因为时间差太小的造成的循环次数加大一些,现在cpu主频都是1-2g的,你设1亿次或者10亿应该才能看到差距for (i = 100000000; i > 0; --i);改成1亿次。