关于计时函数的使用问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 09:39:31
我写来一个程序,
main()
{
int i;
clock_t start,finish;
start = clock();
for(i=10000;i>0;i--)
{}
finish=clock();
printf("%f\n",(double)(finish-start)/CLOCKS_PER_SEC);
}
我单步执行时正确,可我一运行这个程序,时间就是0.000000,这是为什么阿?
还是0.000000,而且我单步执行得到了start 和finish的值,分别是0和810000,最后输出还是0.000000,810000是毫秒么?就是810秒十几分钟么?可我实际上只有一两分钟阿

你们都错了,这个循环显然能被编译器优化掉,也就是说,这个循环在release版中根本就不会被执行!如果是debug版,怎么也要用双重循环或者是用__int64数据类型,百万级别的这种循环对于cpu来说太快了。

那不可能吧~~~不可能十几分钟。。查查这个函数的返回值意义

因为完成这个循环所需时间极短,所以不会有希望得到的结果,尝试作如下修改:

#include <stdio.h>
#include <time.h>
int main()
{
int i;
float cps=(double)CLOCKS_PER_SEC,f,s; //注意这里

s = clock()/cps; //注意这里
for(i=10000;i>0;i--)
{}

f=clock()/cps; //注意这里
printf("%f\n",(f-s)); //注意这里

return 0;

}