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 slow.

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 testing.

I'm well aware of Ninja and it is maybe only 1% faster than Make for full builds[1]. 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.

[1] http://hamelot.io/programming/make-vs-ninja-performance-comparison/

Reply via email to