With modern CPUs mass parallelism, hosted build services, microservices, can't we build even large Project quickly?<p>If it compilation times are a problem for you, how did you resolve this issue and how much of an improvement did you have?
It all depends on the project.<p>Some systems have 45+ min build times. Compilation is part of it, particularly for C++ system, but a test suite that is slow to run, data-intensive steps, and bloated code repositories all contribute.<p>One of the primary motivations behind Google's Go was the slow compile time of their C++ code base.<p>In some cases the most fundamental problem is finding the will to deal with it. With a long build it is still possible to make slow progress. Small changes might be able to speed up the build somewhat, but there is a lot of fear that rearchitecting the system to speed the build will fail, waste time, or otherwise end in tears.<p>I say rearchitecting because often it is the architecture of the system that gets in the way of fast builds. For instance, I think of a system that required automated integration (as opposed to unit) tests because (1) the system was fragile such that we couldn't trust that a "small" change wouldn't break the system and (2) there was any real plan for how certain components fit together, so we were not able to test them in isolation.
For large projects, compilation times are still a problem, yes.<p>Modern mitigations for compilation times include: ccache/sccache, incremental compilation, precompiled headers, "modules", etc.
Mass parallelism and hosted build services only help if you've got money to spend on them.<p>Microservices don't help much when building desktop or mobile apps as opposed to web apps.<p>If you keep artifacts around, local build times can be short, but often you want to clean before doing a build to distribute beyond your own workstation/device. Our iOS app nightly builds regularly take 45-60 min.