Les rĂ©sultats de l'Ă©valuation de l'impact sur la performance de la reconstruction des paquets pour Ubuntu avec diffĂ©rentes options et mises en Ćuvre des fonctions d'allocation de mĂ©moire ont Ă©tĂ© publiĂ©s. L'expĂ©rimentateur a rĂ©ussi Ă augmenter la performance du paquet jq, un outil de traitement de donnĂ©es au format JSON, de 90 % (1,9 fois) grĂące Ă une reconstruction classique Ă partir du mĂȘme paquet avec le code source, sans modifications du code lui-mĂȘme. La performance a Ă©tĂ© Ă©valuĂ©e en mesurant le temps d'exĂ©cution d'une requĂȘte filtrante standard sur des donnĂ©es GeoJSON de 500 Mo.
Résultats de l'expérience :
- La version compilĂ©e en GCC Ă partir des mĂȘmes fichiers source avec les options par dĂ©faut s'est avĂ©rĂ©e plus rapide que le paquet binaire Ubuntu de 2 Ă 4 %.
- La reconstruction avec Clang 18 au niveau d'optimisation « -O3 », incluant l'optimisation au stade de l'édition de liens (« -flto ») et la désactivation des informations de débogage (« -DNDEBUG »), a entraßné une accélération de 20 %.
- La reconstruction avec le systÚme de répartition de la mémoire TCMalloc (ajout de « -L/usr/lib/x86_64-linux-gnu -ltcmalloc_minimal » dans LDFLAGS) a conduit à une accélération de 40 %.
- Le remplacement des fonctions malloc par les systĂšmes de rĂ©partition de la mĂ©moire tcmalloc, jemalloc et mimalloc via « LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libâŠ.so » a entraĂźnĂ© une augmentation de performance de 27 %, 29 % et 44 %. Lors de l'exĂ©cution avec mimalloc, qui a montrĂ© une accĂ©lĂ©ration de 44 %, la variable d'environnement « MIMALLOC_LARGE_OS_PAGES=1 » a Ă©tĂ© dĂ©finie.
- La reconstruction du paquet avec mimalloc dans LDFLAGS au lieu de l'édition de liens via LD_PRELOAD a conduit à une accélération de 90 % lors du test. Un autre test, portant sur le traitement de 2,2 Go de données JSON dans 13 000 fichiers, a également montré un gain de performance d'environ deux fois.
Source : opennet.ru
