On Thursday, 16 June 2016 at 13:39:20 UTC, Atila Neves wrote:
It would be a worthwhile trade-off, if those were the only two
options available, but they're not. There are multiple build
systems out there that do correct builds whilst being faster
than make. Being faster is easy, because make is incredibly
I didn't even find out about ninja because I read about it in a
blog post, I actively searched for a make alternative because I
was tired of waiting for it.
Make is certainly not slow for full builds. That is what I was
I'm well aware of Ninja and it is maybe only 1% faster than Make
for full builds. There is only so much optimization that can
be done when spawning processes as dictated by a DAG. 99% of the
CPU's time is spent on running the tasks themselves.
Where Make gets slow is when checking for changes on a ton of
files. I haven't tested it, but I'm sure Button is faster than
Make in this case because it checks for changed files using
multiple threads. Using the file system watcher can also bring
this down to a near-zero time.
Speed is not the only virtue of a build system. A build system
can be amazeballs fast, but if you can't rely on it doing
incremental builds correctly in production, then you're probably
doing full builds every single time. Being easy to use and robust
is also pretty important.