c++ - 时钟()只返回 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
解决方案
该clock()
函数是对所用 CPU 时间的粗略测量。您的代码没有使用足够的 CPU 时间来进行如此粗略的测量。您可能应该改用类似的东西getrusage
。
推荐阅读
- c# - 如何在netcore3.1 web应用程序中配置swagger带区域?
- hyperledger-fabric - 如何使用/不使用 configtxgen 工具生成 Hyperlegder Fabric 创世块
- sql - 将三行值转换为列,而不是逗号分隔值
- ajax - Yii2,发送带有链接的 AJAX 请求
- java - 具有相同逻辑的多个循环只是不同的字段
- ruby-on-rails - MongoMapper 避免在 Ruby on Rails 中导致 N+1 查询
- javascript - 将自定义属性添加到现有 DOM 事件
- python - AttributeError:模块“PIL”没有属性图像
- python - Matplotlib 不在 Databricks 上打印任何图?
- python-3.x - psycopg2.errors.InvalidFunctionDefinition:创建函数必须指定波动属性(IMMUTABLE|STABLE|VOLATILE)