Die Ergebnisse der Bewertung der Auswirkungen auf die LeistungsfĂ€higkeit der Neukompilierung von Paketen fĂŒr Ubuntu mit verschiedenen Optionen und Implementierungen von Speicherzuweisungsfunktionen wurden veröffentlicht. Es gelang dem Experimentator, die Leistung des jq-Pakets mit Werkzeugen zur Verarbeitung von JSON-Daten um 90 % (faktor 1,9) zu steigern, indem er eine regulĂ€re Neukompilierung aus demselben Paket mit dem Quellcode vornahm, ohne das eigentliche Code zu Ă€ndern. Die Leistung wurde durch die Messung der AusfĂŒhrungszeit einer typischen Filterabfrage ĂŒber GeoJSON-Daten mit einer GröĂe von 500 MB bewertet.
Ergebnisse des Experiments:
- Die in GCC mit denselben Quelltexten und den Standardflags kompilierte Version war 2-4 % schneller als das binÀre Ubuntu-Paket.
- Die Neukompilierung in Clang 18 mit dem Optimierungslevel "-O3", der Aktivierung der Optimierung wĂ€hrend des Linkens ("-flto") und der Deaktivierung von Debug-Informationen ("-DNDEBUG") fĂŒhrte zu einer Beschleunigung um 20 %.
- Die Neukompilierung mit dem TCMalloc-Speicherverfahren (durch HinzufĂŒgen von "-L/usr/lib/x86_64-linux-gnu -ltcmalloc_minimal" in den LDFLAGS) fĂŒhrte zu einer Beschleunigung um 40 %.
- Der Austausch der malloc-Funktionen durch die Speicherzuweisungssysteme tcmalloc, jemalloc und mimalloc mittels "LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libâŠ.so" fĂŒhrte zu einer Leistungssteigerung um 27 %, 29 % und 44 %. Bei der AusfĂŒhrung mit mimalloc, das eine Beschleunigung um 44 % erzielte, wurde die Umgebungsvariable "MIMALLOC_LARGE_OS_PAGES=1" gesetzt.
- Die Neukompilierung des Pakets mit mimalloc in LDFLAGS anstelle der Verlinkung ĂŒber LD_PRELOAD fĂŒhrte zu einer 90%igen Beschleunigung des Tests. Ein weiterer Test zur Verarbeitung von 2,2 GB JSON-Daten in 13000 Dateien zeigte ebenfalls eine Leistungssteigerung von etwa dem doppelten.
Quelle: opennet.ru
