c++ - C++ 如何获取一段代码的执行时间?

标签 c++ linux benchmarking execution-time

我正在尝试对一段代码进行基准测试。它基于此代码 here有趣的部分基本上是这样的:

    auto t0 = std::chrono::high_resolution_clock::now();
    ...
    auto t1 = std::chrono::high_resolution_clock::now();
    std::cout << secs(t1-t0).count() << " s\n";

问题是我在一台共享机器上,这给了我时间,所以我的结果没有给我任何一致的东西。我真正需要的是某种秒表工具,它可以让我只知道代码运行的时间,而不是墙上的时间。有哪些选择?如果涉及系统特定的调用,我在 Linux 机器上,但我宁愿尽可能保持此代码的可移植性。

我看过其他问题,例如 thisthis但它们似乎都提供挂钟解决方案。

最佳答案

如果您的操作系统可用,您可以使用 times API获得与内置 time 命令类似的结果。

#include <sys/times.h>
...
struct tms  start, end;
times(&start);
//Do command
times(&end);
clock_t usr_time = end->tms_utime - start->tms_utime;
clock_t sys_time = end->tms_stime - start->tms_stime;

要 100% 完成,您应该检查时间的结果是否不等于 -1,否则检查 errno 代码。

关于c++ - C++ 如何获取一段代码的执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24560962/

相关文章:

c++ - 如何获取文本文件中的RGB值和坐标值?

c++ - 如何对 Boost Spirit Parser 进行基准测试?

c - Pipe() 不能正常工作 - Linux

linux - 以编程方式发送 SSH 转义字符

javascript - 基准 Javascript : onclick in tag vs click in js

c++ - 访问 dataGridView 列中的组合框?

c++ - 按成员变量的字母顺序对指向对象的指针数组进行排序

linux - 如何从内核空间检查/验证用户空间中 .so 或 exe 的可用性

c++ - 带有命令行参数的 Google 基准测试。编写我自己的主要功能?

java - 测量 Java 中的排序时间