任何人都可以告诉我,如果我错过双线以下会发生什么?
time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
我试图计算我的排序问题的运行时间,并且忘了将类型转换为加倍。代码运行了近90分钟,但打印的输出时间为" 270.000006"。任何人都可以帮我弄清楚这270意味着什么?
此外它有时会显示" -ve"值。这个问题的任何解决方案。
编辑 - 我正在排序10 ^ 9和10 ^ 10个数字,因此代码将运行数小时。
答案 0 :(得分:5)
如果代码运行了将近90分钟,您将在72分钟内在32位架构上获得clock_t类型的溢出。我相信这是你的情况。
答案 1 :(得分:0)
正确用法是:
clock_t begin, end;
double time_spent;
begin = clock();
/* actual task that needs to be monitored */
end = clock();
time_spent = (double)(end - begin) / CLOCKS_PER_SEC; // in seconds
您在这里测量CPU时间,而不是包括I / O时间的经过时间。 CLOCKS_PER_SEC是一个声明的常量。计算需要在浮点运算中完成。 计算时序的另一种替代方法是使用time命令。