gpt4 book ai didi

bash - 将时间的输出和它计时的命令写成一行

转载 作者:行者123 更新时间:2023-11-29 09:46:04 26 4
gpt4 key购买 nike

我正在尝试计算代码库中每个文件的编译时间。

根据 this SO answer , 你可以编写一个脚本来执行实际编译的时间,然后将结果存储在一个文件中

/tmp/time-build :

#!/bin/bash
{ time g++ "$@"; } 2> >(cat <(echo "g++ $@") - >> /tmp/results.txt)

然后您可以覆盖 CMAKE_CXX_COMPILER当调用 cmake 以便 make 使用脚本执行编译时

cmake .. -DCMAKE_CXX_COMPILER=/tmp/time-build
make

这与宣传的一样有效,并产生类似于以下的结果:

real    0m1.190s
user 0m1.044s
sys 0m0.140s
g++ -Werror -Wall -Wextra ... /src/test/foo.cpp

但是,为了简化处理,我只想存储 real时间,并将其与 g++ 命令放在同一行

问题:

我的命令行 fu 不能胜任这个任务:

{ time g++ "$@"; } 2> >(cat <(echo "g++ $@") - >> /tmp/results.txt)

进入只捕获 real 的命令时间的输出,并将其与 echo "g++ $@" 一起包含在内在一条线上。

我不知道 >(cat <( 是什么和 ) -上面命令的部分意思是,我尝试合并一个 grep realecho失败了

我该怎么做?

或者,如果有更惯用的方法让 cmake 为每个处理的文件输出时间,那也是理想的。

最佳答案

获得基于 CMake 的项目的编译时间的最佳方法可能是使用 ninja而不是 make

为此,您必须在配置时指定 ninja 生成器:

cmake -G Ninja <...>

然后使用 ninja 构建:

ninja

之后,查看名为 .ninja_log 的文件。第一列是以毫秒为单位的开始时间,第二列是结束时间,第四列是目标名称,最后一列是所用命令行的哈希值。

甚至还有一些查看和分析此日志的解决方案:ninjatracing.ninja_log 转换为 Chrome 跟踪工具可读的格式。

关于bash - 将时间的输出和它计时的命令写成一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44827644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com