clock()仅返回0

时间:2019-03-31 10:46:56

标签: c++ linux g++ clock

The C `clock()` function just returns a zero

clock() function always returning 0

why C clock() returns 0

我查了所有这些问题和答案

我了解到clock()会根据每个系统返回的某个常数返回时钟滴答声

然后time()返回秒数。

首先,我试图像这样使用clock()测量排序算法的执行时间:

#include <iostream>
#include <ctime>

... Some other headers and codes

a = clock();
exchange_sort();
a = clock() - a;

... Rest of the code

我尝试了许多不同的数据类型,例如int,clock_t,long,float。 然后,我以已经增加的顺序对一个很大的数组int arr[1000]进行了排序。 但是a的值始终为0,因此我尝试使用gdb查找原因,并在排序算法所在的行上设置了一个断点,以便可以检查a = clock();的值,并变量中必须有一些数字,但只有0。

因此,在那之后,我尝试检查该功能是问题本身还是其他类似问题:

#include <iostream>
#include <iostream>

int main()
{
    int a;
    clock_t b;
    float c;
    long d;
    a = clock();
    b = clock();
    c = clock();
    d = clock();
    return 0;
}

然后我通过gdb检查了每个变量的值,在放入clock()的返回值之前只有垃圾数字,但是在变量里面只有0之后。 因此,显然clock()在我的结论中一直都返回0

我真的不知道该如何解决

我的g ++版本是4.4.7。 我在Linux上运行了 我的处理器是x86_64-redhat-linux

2 个答案:

答案 0 :(得分:1)

clock()函数是所用CPU时间的粗略度量。您的代码没有使用足够的CPU时间来进行如此粗略的测量。您可能应该改用getrusage之类的东西。

答案 1 :(得分:1)

我的代码使用了足够的 CPU 时间。但似乎时钟只以 15625 毫秒为单位滴答作响。Elapsed time

我的建议是改用 <chrono>