| ▲ | Comparing C/C++ unity build with regular build on a large codebase (2024)(hereket.com) | ||||||||||||||||
| 12 points by PaulHoule 2 days ago | 5 comments | |||||||||||||||||
| ▲ | jjmarr a day ago | parent | next [-] | ||||||||||||||||
If you're doing single-core builds, you will get impressive speedups from unity builds. This is because C++ compilers spends a lot of time redundantly parsing the same headers included in different .cpp files. Normally, you get enough gains from compiling each .cpp file in parallel that it outweighs the parsing, but if you're artificially limited in parallelism then unity builds can pay for themselves very quickly as they did in the article. C++20 modules try to split the difference by parsing each header once into a precompiled module, allowing it to reuse work across different .cpp files. Unfortunately, it means C++ compilation isn't embarrassingly parallel, which is why we have slow buildsystem adoption. | |||||||||||||||||
| |||||||||||||||||
| ▲ | pstomi 2 days ago | parent | prev | next [-] | ||||||||||||||||
By reading your initial script,I see that there was absolutely no parallelisation in the initial build. Was it a choice because you wanted to compare only single core performances? | |||||||||||||||||
| ▲ | saharazara a day ago | parent | prev [-] | ||||||||||||||||
3 minutes to process 500k lines of text, it really is pathetic how slow C++ is to compile. Any new modern language that can't compile 1 million lines in a couple seconds (without optimizations) should be considered a failure. | |||||||||||||||||