When changing a source file and then building either the client or the server, most of the build time is generally spent on rebuilding things that have not been touched since the last build.
This was relieved a little by the inclusion of ccache in cenbuild in bug 7827. Still, the lack of more fine-grained build incrementality is a severe bottleneck to developer productivity.
Take the 35 million LOC chromium codebase for example (which is actually far larger if we account for generated code not part of the tree). Incrementally building this project after a single C++ file has been changed takes roughly 20 seconds (where roughly half of that consists of linking). This is less than half the time it takes to build tlmisc which is a couple orders of magnitude smaller in terms of code size.