Button: A fast, correct, and elegantly simple build system.

Jason White via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Jun 16 22:41:30 PDT 2016


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/


More information about the Digitalmars-d-announce mailing list