#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 关注
- 724 浏览
添加回答
举报
0/150
提交
取消