测量构建时间以识别瓶颈

时间:2011-09-08 23:44:14

标签: optimization makefile build-process

我正在努力改进一些项目的构建。我已经非常显着地改进了构建时间,而且我现在处于一个我认为瓶颈更微妙的地步。

构建使用GNU样式的makefile。我生成了一系列依赖文件(.d)并将它们包含在makefile中,否则没有任何花哨的东西(例如,没有预编译的头文件或其他缓存机制)。

在32核sparc ultra上构建大约需要95秒,并行运行16个线程。在构建运行时,空闲时间徘徊在80%左右,内核时间徘徊在8-10%之间。我把代码放在/ tmp中,但大多数编译器支持文件是NFS挂载的,我相信这可能会造成性能瓶颈。

有哪些工具可用于测量和测量追查这些问题?

1 个答案:

答案 0 :(得分:1)

根据我自己的经验,编译C / C ++代码需要通过C预处理器读取大量头文件。我遇到过g ++运行时间超过50%来生成完整翻译单元的情况。

正如你所说,它在编译时闲置80%,它必须等待I / O. iostat和DTrace将是一个很好的起点。