Közölve lettek a különböző opciókkal és a memóriaallokálási funkciók megvalósításaival végzett Ubuntu csomagok újraépítésének teljesítményére gyakorolt hatás értékelésének eredményei. A kísérletvezetőnek sikerült 90%-kal (1,9-szer) növelnie a jq csomag teljesítményét, amely JSON formátumú adatok feldolgozására szolgáló eszközként ismert, a forráskódjának átépítésével, a kód megváltoztatása nélkül. A teljesítményt a 500 MB méretű GeoJSON adathalmazon végzett tipikus szűrőlekérdezés végrehajtási idejének mérésével értékelték.
A kísérlet összefoglalója:
- A GCC-ben a meglévő forrásokból alapértelmezett zászlókkal összeállított változat 2-4%-kal gyorsabb volt, mint az Ubuntu bináris csomagja.
- A Clang 18 -O3 optimalizálási szinttel, a linkelési fázisban végzett optimalizálással («-flto»), és a hibakeresési információk kikapcsolásával («-DNDEBUG») történő újraépítés 20%-os sebességnövekedést eredményezett.
- A TCMalloc memóriaelosztó rendszerrel végzett újraépítés («-L/usr/lib/x86_64-linux-gnu -ltcmalloc_minimal» hozzáadása az LDFLAGS-hez) 40%-os gyorsulást eredményezett.
- A malloc funkciók tcmalloc, jemalloc és mimalloc memóriaelosztó rendszerekkel való helyettesítése «LD_PRELOAD=/usr/lib/x86_64-linux-gnu/lib….so» segítségével 27%, 29% és 44%-os teljesítménynövekedést hozott. A mimalloc használatakor, amely 44%-os gyorsulást mutatott, a környezeti változó «MIMALLOC_LARGE_OS_PAGES=1» volt beállítva.
- A mimalloc használatával végzett újraépítés az LDFLAGS-ben LD_PRELOAD helyett 90%-os gyorsuláshoz vezetett a teszt során. Egy másik teszt a 2,2 GB JSON adat 13000 fájlban való feldolgozására szintén körülbelül kétszeres teljesítménynövekedést mutatott.
Forrás: opennet.ru
