Première version stable de zlib-ng, un fork haute performance de zlib

La version de la bibliothèque zlib-ng 2.0 est maintenant disponible, marquant le premier lancement stable du projet (un correctif 2.0.1 est déjà disponible). Zlib-ng est compatible avec zlib au niveau de l'API, mais offre des optimisations supplémentaires qui n'ont pas été acceptées dans le dépôt officiel de zlib en raison d'une approche conservatrice concernant l'acceptation des modifications. Une API modernisée, basée sur zlib mais modifiée pour simplifier le portage, a également été proposée. Le code du projet est écrit en C et distribué sous la licence Zlib.

Les tests effectués sur des systèmes x86_64 ont montré qu'en matière de compression, Zlib-ng est environ quatre fois plus rapide que zlib et 2,1 fois plus rapide que gzip. Lors de la décompression, Zlib-ng est environ 2,4 fois plus rapide que zlib et 1,8 fois plus rapide que gzip. Cette amélioration substantielle des performances de compression/décompression a été principalement réalisée grâce à l'utilisation d'instructions vectorielles SSE*, AVX2, VSX et Neon.

Cela inclut la mise en œuvre d'un algorithme de calcul de sommes de contrôle Adler32, optimisé grâce aux instructions SSSE3, AVX2, Neon et VSX, ainsi qu'une implémentation de CRC32-B basée sur PCLMULQDQ et ACLE, des tables de hachage améliorées, une réalisation du hachage Slide utilisant SSE2, AVX2, Neon et VSX, et des opérations de comparaison basées sur SSE4.2 et AVX2. Des modifications ciblées pour améliorer les performances, tirées des forks d'Intel et de Cloudflare, ont également été incluses. Le processus de gestion des buffers a été optimisé. Le support des systèmes de construction CMake et NMake a été ajouté. Des systèmes d'intégration continue ont été utilisés pour les tests.

Outre les optimisations, Zlib-ng inclut également les correctifs accumulés dans les paquets de distribution et a nettoyé le code des solutions de contournement utilisées dans zlib pour la prise en charge des anciens compilateurs et plateformes, qui gênent la mise en œuvre de méthodes plus efficaces (par exemple, les limitations nécessaires pour prendre en charge des systèmes de 16 bits et des compilateurs non compatibles avec ANSI C). Des efforts ont été consacrés à l'identification et à la correction des bugs signalés par des analyseurs statiques, des systèmes de tests de fuzzing et des outils de détection de problèmes de gestion de la mémoire (AddressSanitizer et MemorySanitizer).

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster