3 ms·
Unreal Engine also do something called a Unity build (the irony) which also put multiple cpp files in one big file by using #include
by stevefan1999 2y ago
Unreal Engine also do something called a Unity build (the irony) which also put multiple cpp files in one big file by using #include
- forrestthewoods 2y agoThat's not really the same thing. Unreal's "Unity" build is more of a build time optimization. It doesn't output actual source files you can drop into a project like SQLite's amalgamation. Perhaps similar in structure. But different in both goal and output.
- lifthrasiir 2y agoBoth do share a minor but significant performance advantage. Also unity builds don't really improve build time much by itself, it only makes sense because many unchanged files are still too many to link in incremental settings.
- forrestthewoods 2y agoI’m pretty sure the primary reason Unity builds exist is to make builds faster by eliminating massively duplicated header compiles…
- lifthrasiir 2y agoYou have probably confused unity builds from precompiled header files, which can be combined in the same fashion. Unity builds just mean the combined compilation of otherwise multiple files and therefore the reduction of output files to be further processed. An unqualified "unity build" typically means unity builds where inputs are source files and outputs are object files to be linked. This is most evident by considering how would you use corresponding header files from your project: you would still include the same set of header files. PCH unity builds would instead force you to include a single dedicated header file, like `#include "pch.h"`. I never heard them to be called just "unity builds" in my experience, in fact it was more likely that "PCH" implied a unity build of PCH files.
- fanf2 2y agoThis has a good comparison of compile times with unity builds and PCH https://alexanderhoughton.co.uk/blog/faster-compiling-visual-studio-unity-jumbo-builds/ https://alexanderhoughton.co.uk/blog/faster-compiling-visual...
- lifthrasiir 2y agoThat page correctly mentions what is really happening: the same set of headers was used for all source files, so they were very easy to eliminate either by a single compile process with a shared cache or by having headers pre-compiled. The test header file also contains <windows.h> and <iostream>, which are known to be very large and only sparingly used compared to others, so unity builds were unexpectedly close to PCH in terms of performance here. (Also typical mid-sized C++ projects that benefit from unity builds are not that fast to compile ;-) In any case, the distinction between unity builds and PCH should remain clear.