Ok fair enough, to be excruciatingly semantically correct, meson is fast because ninja is fast and meson requires files to be listed because ninja does not support directory search, and meson being a sloooow python program meson build just invokes ninja and does nothing else, ninja will re-invoke meson if any of the meson.build files change.

In fact you can invoke ninja build instead of meson build, that is how little meson build does when using the ninja backend. 😁

Sure a makefile written to ninja rules will likely be nearly as fast because those rules are designed to make a fast build system, so except for automatic parallelisation it should be similar because it does much the same stuff (other than automatic include dependency handling and no recursive dependency issues, but they are convenience and accuracy issues, not speed).

And for make you can of course try to guess a suitable -j yourself and try to remember to run make depends manually when you change includes (unless you use the GNU make extensions, which autofools doesn't).

But almost all makefiles written by humans, and by autofools, and by most other tools, do not meet the ninja rules, and as @kugel- pointed out that is what most comparisons are to. It would be interesting to get benchmarks of ninja and kmake makefiles for a big program like chromium, frankly Geany is just a tiddler[1]. IIUC pre-ninja chromium make would take ages to figure out what to do before it actually started the compiles, which was annoying if you only changed one character 👿

This lack of search is also important on windows where the file system is slow (by comparison to linux) and makes the visual studio backend work better too.

Anyway @kugel- thanks for fixing the Julia, probably should have prompted when I merged it, but didn't think of it.

[1] tiddler: a thing so small its not worth anything in the context, usually of fish that are thrown back.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.