De prestaties van het Ubuntu-pakket jq zijn met 1,9 keer verbeterd door middel van hercompilatie.

De resultaten van de evaluatie van de impact op de prestaties van hercompilatie van pakketten voor Ubuntu met verschillende opties en implementaties van geheugenallocatiefuncties zijn gepubliceerd. De experimentator slaagde erin om de prestaties van het jq-pakket, een tool voor het verwerken van gegevens in JSON-indeling, met 90% (1,9 keer) te verhogen door een standaard hercompilatie van hetzelfde pakket met de broncode, zonder wijzigingen in de code zelf. De prestaties werden geëvalueerd door de uitvoeringstijd van een typische filteropdracht op 500MB GeoJSON-gegevens te meten.

Resultaten van het experiment:

  • De variant, opgebouwd met GCC uit dezelfde bronbestanden met standaardvlaggen, bleek 2-4% sneller dan het binaire Ubuntu-pakket.
  • Hercompilatie in Clang 18 met optimalisatieniveau ‘-O3’, inschakeling van optimalisatie tijdens de linkfase (‘-flto’) en uitschakeling van foutopsporingsinformatie (‘-DNDEBUG’) resulteerde in een versnelling van 20%.
  • Hercompilatie met het geheugenbeheersysteem TCMalloc (toevoegen van ‘-L/usr/lib/x86_64-linux-gnu -ltcmalloc_minimal’ in LDFLAGS) resulteerde in een versnelling van 40%.
  • Vervanging van malloc-functies door de geheugenbeheersystemen tcmalloc, jemalloc en mimalloc via ‘LD_PRELOAD=/usr/lib/x86_64-linux-gnu/lib….so’ zorgde voor een prestatieverbetering van respectievelijk 27%, 29% en 44%. Bij het uitvoeren met mimalloc, dat een versnelling van 44% liet zien, werd de omgevingsvariabele ‘MIMALLOC_LARGE_OS_PAGES=1’ ingesteld.
  • Hercompilatie van het pakket met mimalloc in LDFLAGS in plaats van linken via LD_PRELOAD leidde tot een versnelling van 90% in de testpassing. Een andere test voor de verwerking van 2,2 GB JSON-gegevens in 13.000 bestanden toonde ook een prestatieverbetering van ongeveer twee keer.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster