如何理解Bazel的输出时间?

How to understand Bazel's output time?

每次构建完成后,我都会看到如下内容:

运行时间:1034.748s,关键路径:257.54s

想知道经过时间和关键路径之间有什么区别?是什么导致了时差?

转发自:https://github.com/bazelbuild/bazel/issues/3164

"Elapsed time" 显示构建的墙时间,从 Bazel 开始 运行 开始第一个构建操作直到最后一个操作完成。

"Critical path" 显示构建最长动作链所花费的时间,其中每个后续动作都取决于前一个动作的输出,因此它们必须按顺序 运行。关键路径是本次构建的干净构建时间的下限;即使 CPU 的内核数量多于 Bazel 曾经 运行 的并行操作数量,构建仍然无法更快地完成。

时间差是因为Bazel也执行了其他动作造成的。 运行 可能有比关键路径上更多的操作。