如何在 bazel build 中获取每个规则的时间成本

how to get each rule's time cost in bazel build

我想获取执行 bazel 构建时每条规则所花费的时间。 我在 bazel 中找到 aspect,使用该功能我可以在日志文件中打印每个规则的完成时间。

但是我发现规则的某些方面在规则执行之后执行,因此当规则开始执行时我无法获得。

那么有什么方法可以在规则执行之前对其进行扩展吗?

Bazel 内置了 performance profiling,它提供了很多细节。 运行 使用 --profile=/tmp/profile.gz 构建,然后将生成的文件加载到任何 Chrome 实例中的 chrome://tracing 中。你会得到这样的东西(来自文档):

请注意,由于 bazelbuild/bazel#12965,您可能需要在加载到 Chrome 之前手动解压缩它。

如果您想自己编写一个工具来分析它,profile file format 也有文档。