The key is that you have to evaluate the tools relative to a task or project that you need to do. Different objectives may give different results.
Ahem. Care to re-read the comment I commented to, then my comment, and your own? You are restating my own statement, in a comment attempting to rebutt me. Weird. Did you have a point of your own, or did you just want to express your dislike of me via disagreeing?
Yes, current versions of GCC use quite a lot of CPU time to compile to machine code, but I would not characterize it as
slow.
The standard Unix toolchain (make + a compiler) is quite
efficient, as it does not do unnecessary work;
and among similarly capable compilers and build systems, GNU make and gcc are surprisingly fast.
If you test say gcc 2.95, you'll find that it is much faster than current versions of gcc. This is not because gcc has become worse, but because it spends more time in constructing the best machine code from the same sources than it used to. If you look at the generated machine code, the newer versions do a much better job. (In particular, older versions of gcc were terribly poor at register use, and generated a lot of unnecessary moves between registers. On hardware architectures with few registers, like x86, this meant the old versions generated pretty inefficient machine code.)
gcc is not as good as Intel CC when compiling to x86 or AMD64, but then again, gcc can compile the same C code to many different hardware architectures. I personally want AMD64, AVR, and various flavours of ARM Cortex support.
The way I define
slow is comparing the time taken to the amount of work done. The Arduino environment is slow, because it does a lot of unnecessary work; and what work it does, it does in inefficient ways.
If you consider a build system that only recompiles intermediate object files whose sources or configuration has changed "enterprise grade", when that approach has been
standard in the unixy world for four decades, you must be bonkers. I consider any build system that does not do that a toy, or a hack. I haven't decided which one I think Arduino is, but I'm leaning towards a cheap hack.