【问题标题】:clock() just returns 0时钟()只返回 0
【发布时间】:2019-08-21 17:37:36
【问题描述】:

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

【问题讨论】:

标签: c++ linux g++ clock


【解决方案1】:

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

【讨论】:

  • 谢谢!!那么在 main 函数的开头调用 clock() 时每个人都得到 0 吗?
  • @Thankyouforanswering 在大多数代码最多的平台上,是的,因为您还没有使用太多 CPU 时间。
【解决方案2】:

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

我的建议是改用&lt;chrono&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多