// writing
Notes from the executor.
Build-engineering posts about ninja, caching, scheduling, and the places measurement disagrees with intuition.
-
Profiling build graphs honestly
Most build profiling work is done with the wrong tool, the wrong granularity, or the wrong assumptions about what 'slow' means. Here is how to do it well.
profilingbuild graphsmeasurement -
Drop-in caching that doesn't break determinism
Caching can speed up a build or break it. The difference is what the cache hashes and what it remembers. Here is the design that lets rninja cache aggressively without changing the result.
cachingcorrectnessdeterminism -
Where ninja leaves perf on the table
ninja is fast because it strips the executor down to its essentials. That same minimalism is also where the modern speedups live. Here is the map of the table.
schedulingninjaperformance