我有一个基于GPR的大型项目,编译时间可能超过30分钟。
分析了构建过程后,我注意到许多明显的低效率(多次调用gprbuild而不是聚合,过度使用替代文件而不是配置等)。我想知道是否有一些方法来描述'构建过程,看看需要这么长时间。
特别是即使单个文件发生更改并且出现错误,也需要大约5分钟重新编译。从理论上讲,应该很快意识到必须重新编译该文件(它是唯一的文件)并启动编译过程,快速发现错误。
从详细输出看起来好像只需要解析用于定义构建的大量gpr文件网络,但我想知道它花费大部分时间在哪里。
因此我的问题是:是否可以分析gprbuild完成的构建?如果是这样,怎么样?
答案 0 :(得分:4)
从低到高的复杂性:
gprbuild
报告有关旗帜-vh
的详细信息。gprbuild
运行strace
。gprbuild
以使用gprof
对其进行分析(但要注意gprof
并不总是说实话)。