时钟()只是 returns 0

clock() just returns 0

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

clock() function always returning 0

why C clock() returns 0

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

而且我了解到 clock() returns 时钟滴答每个常数因系统而异

和time() returns秒数

首先,我尝试使用 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()的return值之前只有垃圾数字,但是在我放入之后变量中只有0。 所以显然 clock() 在我的结论中一直 returns 0

我真的不知道该如何解决这个问题

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

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

我的代码使用了足够的 CPU 时间。但时钟似乎只以 15625ms 的步长滴答作响。

我的建议是改用 <chrono>