1

我有一个基于 GPR 的大型项目,编译可能需要 30 多分钟。

分析了构建过程后,我注意到许多明显的低效率(多次调用 gprbuild 而不是聚合,过度使用替代文件而不是配置等)。我想知道是否有某种方法可以“分析”构建过程以查看需要这么长时间。

尤其是当单个文件发生更改并且其中存在错误时,重新编译大约需要 5 分钟。从理论上讲,应该很快意识到必须重新编译该文件(它是唯一一个这样做的)并开始编译过程,迅速发现错误。

从详细的输出来看,仅解析用于定义构建的大量 gpr 文件网络似乎需要相当长的时间,但我想知道它大部分时间都花在了哪里。

因此我的问题是:是否可以分析 gprbuild 完成的构建?如果是这样,怎么做?

4

1 回答 1

5

从低到高复杂度:

  • 要求gprbuild报告更多关于它对标志所做的事情的详细信息-vh
  • 跑过。gprbuild_strace
  • gprbuild使用所需的标志重新构建以使用它来分析它gprof(但请注意,gprof这并不总是说实话)。
于 2018-04-19T19:10:19.763 回答