【问题标题】:How to make g++ to show the execution time in terminal?如何让 g++ 在终端中显示执行时间?
【发布时间】:2014-03-02 20:54:30
【问题描述】:

我想让 g++ 告诉我执行时间是多少,也许还有回报。

g++ file.cpp -o file
./file

当我制作可执行文件然后调用它时,它只显示输出而没有返回和执行时间。

我想让它显示如下:

Process returned 0 (0x0)    execution time : 0.002 s

感谢您的关注!

【问题讨论】:

  • 改为time ./file 并根据您的需要解析输出。
  • shell 会在$? 变量中捕获退出状态,因此echo $? 会显示最近执行的命令的退出状态。但我不知道如何在 Windows 命令提示符下进行操作。

标签: c++ linux g++


【解决方案1】:

您可以使用“时间”命令测量您的过程需要多长时间。

要确定返回值,可以打印$?运行程序后的环境变量:

time ./file ; echo Process returned $?

您还可以使用 -f(或 --format)选项指定时间应如何精确格式化其结果。 但是,某些 Linux 发行版可能默认使用 bash 内置时间实现,但缺少该选项,因此您可能必须提供使用 实时 时间程序的完整路径:

/usr/bin/time -f "Execution time: %E" ./file

【讨论】:

    【解决方案2】:

    先看这里:calculating execution time in c++

    您还可以在代码中使用时钟(来自time.h)(尽管对于多线程代码它有点有趣)

    int a;
    unsigned t0 = clock(), t1;
    std::cin >> a;
    t1 = clock() - t0;
    

    【讨论】:

      【解决方案3】:

      您可以按如下方式使用时间命令:
      time ./file

      【讨论】:

        【解决方案4】:

        仔细阅读time(7)。你可以在外部使用time(1)(从你的shell,比如answeredhere)。你也可以在你的程序系统调用中使用 clock_gettime(1) 等...

        对于小的延迟(例如,少于半秒),不要期望计时真的有意义或准确。

        顺便说一句,您的问题与 GCC 编译器(即g++)没有太大关系。如果使用最近的GCC 4.8 和-std=c++11,您可以使用std::chrono 等...即使使用这些,也不是编译器在为您的程序计时(而是一些库函数使用syscalls)

        【讨论】:

          猜你喜欢
          • 2020-08-23
          • 2011-12-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多