Che*_*evy 19 optimization profiling makefile gnu-make
所以我有这个基于Makefile的构建系统,我的用户觉得它运行得太慢了.为了这个问题,我们将性能定义为确定实际应该做什么所花费的时间.
我可以看到一些优化途径 -
make -C- 但我想先知道我的瓶颈在哪里.由于没有分析的优化是浪费生命,我想问:如何分析Makefile?
假设我继承的系统设计得相当好,即它已经实现了最常见的交易技巧:(主要是)非递归make,ccache,预编译头,自动生成的头依赖等).
......而且只是为了抢占一些可能的答案.我知道可能会有更快更好的构建系统然后GNU制作 - (就个人而言,我迫不及待地想看看CMake的人会对Ninja系统提出什么) - 但遗憾的是,交换构建系统并不在卡片中.
我认为没有任何方法可以分析 Makefile 本身。
不过,您可以做一些事情:对于空构建(一切都是最新的),在下面运行顶级 makestrace -tt -fv并查看树的哪些部分、哪些递归子制作、哪些文件访问等花费了意想不到的长时间。
计算变量 ( var := $(shell ...))、重复的 NFS 文件stat调用等通常会导致make速度变慢。