Unity builds
Unity builds sind eine Technik zur Reduzierung der Build-Zeiten. Die Funktionsweise ist relativ einfach. Angenommen, wir haben die Quelldateien src1.c, src2.c und src3.c. Normalerweise würden wir den Compiler dreimal ausführen, einmal für jede Datei. Bei einem Unity Build kompilieren wir stattdessen all diese Quellen in einer einzigen Einheit. Der einfachste Ansatz ist die Erstellung einer neuen Quelldatei, die wie folgt aussieht.
#include<src1.c>
#include<src2.c>
#include<src3.c>
Diese wird dann anstelle der einzelnen Dateien kompiliert. Die genaue Geschwindigkeitssteigerung hängt natürlich von der Codebasis ab, aber es ist nicht ungewöhnlich, mehr als 50 % Geschwindigkeitssteigerung bei den Kompilierungszeiten zu erzielen. Dies geschieht, obwohl der Unity Build nur eine CPU verwendet, während einzelne Kompilierungen parallel ausgeführt werden können. Unity Builds können auch zu schnellerem Code führen, da der Compiler aggressivere Optimierungen durchführen kann (z. B. Inlining).
Der Nachteil ist, dass inkrementelle Builds so langsam sind wie vollständige Neuerstellungen (da sie genau das sind). Unity-Kompilierungen verbrauchen auch mehr Speicher, was in bestimmten Szenarien zu Problemen führen kann. Es kann auch einige Fehler im Quellcode geben, die behoben werden müssen, bevor Unity-Kompilierungen funktionieren. Wenn beispielsweise sowohl src1.c als auch src2.c eine statische Funktion oder Variable mit demselben Namen enthalten, kommt es zu einem Konflikt.
Meson verfügt über eine integrierte Unterstützung für Unity Builds. Um diese zu aktivieren, geben Sie einfach --unity on auf der Kommandozeile an oder aktivieren Sie Unity Builds in Ihren Projekt-Standardoptionen (default_options). Es sind keine Codeänderungen erforderlich, abgesehen von dem oben diskutierten potenziellen Konfliktproblem. Meson generiert automatisch alle notwendigen Inklusionsdateien für Sie.
Sie können die Unity-Einstellungen für ein bestimmtes Build-Ziel mit dem Parameter override_options ändern. Dies kann nützlich sein, wenn ein Build-Ziel nicht mit Unity Builds kompatibel ist.
Die Option unity kann auch den Wert subprojects haben, um Unterprojekte mit Unity zu bauen, während das Hauptprojekt inkrementell gebaut wird.
Die Option unity_size ermöglicht die Angabe der Anzahl der pro Unity-Datei enthaltenen Quelldateien. Der Standardwert ist 4. Mehr Quelldateien pro Unity-Datei beschleunigen vollständige Builds, verlangsamen aber inkrementelle Builds. Um nur eine Unity-Datei pro Build-Ziel zu erhalten, können Sie einen sehr großen Wert für unity_size verwenden.
Die Ergebnisse der Suche sind