Ninja: 每个 subninja 的计时构建时间

创建于 2015-12-22  ·  9评论  ·  资料来源: ninja-build/ninja

我需要计算每个 subninja 需要多少时间来构建。

我遇到了两个主要问题:

  1. 我真的找不到一种方法来为目标计时,然后通过用计时脚本包装每个命令来计时。
  2. 我无法将规则链接到某个 subninja。

除了每个模块的时间之外,还有其他方法吗?
&
有没有办法将 $subninja 导出为变量,例如 $out?

真诚的,乔拉格。

编辑:如果将此作为功能添加到忍者(计时每个子模块构建时间)是可能的,那就太好了!

最有用的评论

您还可以查看.ninja_log文件,该文件列出了第一列和第二列中所有边的开始和结束时间。

所有9条评论

您可以根据 subninja 文件中定义的所有目标添加虚假目标(例如称为sub_all )。 然后对于时间你可以做: time ninja sub_all

我的目标不是为整个构建过程计时,而是分别为每个 subninja 计时。
最终,它的目的是弄清楚为什么某些 subninjas 需要比平时更长的时间来构建

我想我明白了。 当您将目标作为参数传递给 ninja(如sub_all )时,它只会构建此目标。

您可以对所有的 subninja 重复此过程。

您还可以查看.ninja_log文件,该文件列出了第一列和第二列中所有边的开始和结束时间。

它是否在所有版本的忍者中都列出了它? 我的忍者版本大概是
1.3什么的...

2015-12-28 20:22 GMT+02:00 Ilya Popov通知@github.com:

您还可以查看 .ninja_log 文件,其中列出了开始和结束
第一列和第二列中所有边的时间。


直接回复此邮件或在 GitHub 上查看
https://github.com/ninja-build/ninja/issues/1080#issuecomment -167620057。

我刚刚检查了 1.3.4 并且确实如此。 您在.ninja_log中看到了什么? 它在第一行(即注释)中说了什么? 是“ # ninja log v5 ”吗?

我目前不在我的工作场所,我会在明天回复

2015-12-29 11:54 GMT+02:00 Ilya Popov通知@github.com:

在 1.3.4 中确实如此。 您在 .ninja_log 中看到了什么? 它在说什么
第一行(这是评论)? 是“#ninja log v5”吗?


直接回复此邮件或在 GitHub 上查看
https://github.com/ninja-build/ninja/issues/1080#issuecomment -167758376。

另请参阅https://groups.google.com/forum/#!topic/ninja -build/aD82sxwD3_o - 似乎更像是一个支持问题,而不是 ninja 本身的问题,所以关闭它。

这是一些 AWK 的东西,它们显示了通过构建历史平均每个目标的构建时间。

#!/usr/bin/awk -f

!/^#/ {
    TIMES[$4] += ($2 - $1)/1000
    COUNT[$4] += 1
}

END {
    for (TGT in TIMES)
        AVG[TGT]=TIMES[TGT]/COUNT[TGT]
    asorti(AVG, SORTED, "@val_num_desc")
    for (num in SORTED)
        print AVG[SORTED[num]] " " SORTED[num]
}

在你的$PATHchmod +x $ 的某个地方保存为show-ninja-build-stats之后,你可以简单地在你的构建目录中运行show-ninja-build-stats < .ninja_log

感谢您检查此日志文件的提示,@ilyapopov。

此页面是否有帮助?
0 / 5 - 0 等级