作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用 C++ 测量我的算法所用的挂钟时间。许多文章都指向这段代码。
clock_t begin_time, end_time;
begin_time = clock();
Algorithm();
end_time = clock();
cout << ((double)(end_time - begin_time)/CLOCKS_PER_SEC) << endl;
但这仅测量我的算法占用的 CPU 时间。其他一些文章指出了这段代码。
double getUnixTime(void)
{
struct timespec tv;
if(clock_gettime(CLOCK_REALTIME, &tv) != 0) return 0;
return (tv.tv_sec + (tv.tv_nsec / 1000000000.0));
}
double begin_time, end_time;
begin_time = getUnixTime();
Algorithm();
end_time = getUnixTime();
cout << (double) (end_time - begin_time) << endl;
我认为它会打印我的算法所用的挂钟时间。但令人惊讶的是,这段代码打印的时间比之前代码打印的 cpu 时间要低得多。所以,我很困惑。请提供打印挂钟时间的代码。
最佳答案
那些时间可能在噪音中消失了。要获得合理的时间测量,请尝试在循环中多次执行您的算法:
const int loops = 1000000;
double begin_time, end_time;
begin_time = getUnixTime();
for (int i = 0; i < loops; ++i)
Algorithm();
end_time = getUnixTime();
cout << (double) (end_time - begin_time) / loops << endl;
关于c++ - 如何用 C++ 测量挂钟时间而不是 cpu 时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56400092/
我是一名优秀的程序员,十分优秀!