Boli zverejnené výsledky hodnotenia vplyvu na výkon prekompilácie balíkov pre Ubuntu s rôznymi možnosťami a implementáciami funkcií alokácie pamäte. Experimentátorovi sa podarilo zvýšiť výkon balíka jq na 90% (o 1,9-násobok) pomocou bežnej prekompilácie z toho istého balíka so zdrojovým kódom, bez zmien v samotnom kóde. Výkon bol hodnotený meraním času vykonania typového filter požiadavky nad údajmi GeoJSON o veľkosti 500 MB.
Zhrnutie experimentu:
- Možnosť skompilovaná v GCC zožrala rýchlejšie binárny balík Ubuntu o 2-4%.
- Prekompilácia v Clang 18 s úrovňou optimalizácie "-O3", s povolením optimalizácie v štádiu prepojenia ("-flto") a zakázaním ladenia ("-DNDEBUG") viedla k urýchleniu o 20%.
- Prekompilácia so systémom rozdeľovania pamäte TCMalloc (pridanie "-L/usr/lib/x86_64-linux-gnu -ltcmalloc_minimal" do LDFLAGS) viedla k urýchleniu o 40%.
- Nahradenie funkcií malloc systémami rozdeľovania pamäte tcmalloc, jemalloc a mimalloc prostredníctvom "LD_PRELOAD=/usr/lib/x86_64-linux-gnu/lib….so" viedlo k zvýšeniu výkonu o 27%, 29% a 44%. Pri spustení s mimalloc, ktorý preukázal urýchlenie o 44%, bola nastavená premenná prostredia "MIMALLOC_LARGE_OS_PAGES=1".
- Prekompilácia balíka s mimalloc v LDFLAGS namiesto prepojenia cez LD_PRELOAD viedla k urýchleniu testu o 90%. Iný test spracovania 2,2 GB údajov JSON v 13000 súboroch tiež ukázal nárast výkonu približne dvakrát.
Zdroj: opennet.ru
