c程序的计算执行时间错误?

时间:2014-08-28 08:10:19

标签: c time.h

任何人都可以告诉我,如果我错过双线以下会发生什么?

time_spent = (double)(end - begin) / CLOCKS_PER_SEC;

我试图计算我的排序问题的运行时间,并且忘了将类型转换为加倍。代码运行了近90分钟,但打印的输出时间为" 270.000006"。任何人都可以帮我弄清楚这270意味着什么?

此外它有时会显示" -ve"值。这个问题的任何解决方案。

编辑 - 我正在排序10 ^ 9和10 ^ 10个数字,因此代码将运行数小时。

2 个答案:

答案 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命令。

阅读How to log the time taken for a unix command?