Resultaterne af evalueringen af indflydelsen på ydeevnen ved genkompilering af pakker for Ubuntu med forskellige indstillinger og implementeringer af hukommelseshåndteringsfunktioner er offentliggjort. Eksperimentatoren formåede at forbedre ydeevnen af jq-pakken med 90% (1,9 gange) ved at genkompilere pakken fra den samme kildekode uden at ændre i selve koden. Ydeevnen blev vurderet ved at måle udførelsestiden for en typisk filtreringsforespørgsel på GeoJSON-data, der er 500 MB store.
Resultaterne af eksperimentet:
- Varianten, der blev bygget i GCC fra de samme kildekilder med standardflag, viste sig at være 2-4% hurtigere end Ubuntu's binære pakke.
- Genkompilering i Clang 18 med optimeringsniveauet '-O3', aktivering af optimering under linking ('-flto') og deaktivering af fejlinformation ('-DNDEBUG') resulterede i en hastighedsforøgelse på 20%.
- Genkompilering med hukommelsesfordelingssystemet TCMalloc (tilføjelse af '-L/usr/lib/x86_64-linux-gnu -ltcmalloc_minimal' til LDFLAGS) resulterede i en hastighedsforøgelse på 40%.
- Udskiftning af malloc-funktioner med hukommelsesfordelingssystemerne tcmalloc, jemalloc og mimalloc via 'LD_PRELOAD=/usr/lib/x86_64-linux-gnu/lib….so' resulterede i en præstationsforøgelse på 27%, 29% og 44%. Ved brug af mimalloc, som viste en hastighedsforøgelse på 44%, blev miljøvariablen 'MIMALLOC_LARGE_OS_PAGES=1' sat.
- Genkompilering af pakken med mimalloc i LDFLAGS i stedet for at linke via LD_PRELOAD førte til en 90% hurtigere gennemløbstest. En anden test med behandling af 2,2 GB JSON-data i 13.000 filer viste også en præstationsforøgelse på cirka det dobbelte.
Kilde: opennet.ru
