Wydajność pakietu jq dla Ubuntu udało się zwiększyć 1,9 razy poprzez rekompilację.

Opublikowano wyniki oceny wpływu na wydajność przebudowy pakietów dla Ubuntu z różnymi opcjami i realizacjami funkcji alokacji pamięci. Eksperymentatorowi udało się zwiększyć wydajność pakietu jq, który służy do przetwarzania danych w formacie JSON, o 90% (1,9 razy) poprzez standardową przebudowę z tego samego pakietu źródłowego, bez wprowadzania zmian w samym kodzie. Wydajność oceniano poprzez pomiar czasu wykonania typowego zapytania filtrującego na danych GeoJSON o rozmiarze 500 MB.

Wyniki eksperymentu:

  • Wariant zbudowany w GCC z tych samych źródeł z flagami domyślnymi okazał się szybszy od binarnego pakietu Ubuntu o 2-4%.
  • Przebudowa w Clang 18 z poziomem optymalizacji '-O3', włączeniem optymalizacji na etapie łączenia ('-flto') i wyłączeniem informacji debugowych ('-DNDEBUG') prowadziła do przyspieszenia o 20%.
  • Przebudowa z systemem alokacji pamięci TCMalloc (dodanie '-L/usr/lib/x86_64-linux-gnu -ltcmalloc_minimal' do LDFLAGS) dała przyspieszenie o 40%.
  • Zastąpienie funkcji malloc systemami alokacji pamięci tcmalloc, jemalloc i mimalloc poprzez 'LD_PRELOAD=/usr/lib/x86_64-linux-gnu/lib….so' doprowadziło do wzrostu wydajności o 27%, 29% i 44%. Przy uruchomieniu z mimalloc, które pokazało przyspieszenie o 44%, ustalono zmienną środowiskową 'MIMALLOC_LARGE_OS_PAGES=1'.
  • Przebudowa pakietu z mimalloc w LDFLAGS zamiast łączenia przez LD_PRELOAD doprowadziła do przyspieszenia w teście o 90%. Inny test przetwarzania danych JSON o wielkości 2,2 GB w 13000 plików również pokazał wzrost wydajności o około dwa razy.

Źródło: opennet.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster