【发布时间】:2019-08-21 17:37:36
【问题描述】:
The C `clock()` function just returns a zero
clock() function always returning 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
【问题讨论】:
-
我建议改用std::chrono 并让自己成为一个更现代的编译器(例如通过安装devtoolset-8)。
-
@Lock-not-gimbal 感谢您提供线索!我应该详细阅读
-
@JesperJuhl 我只知道这个功能!谢谢