Prima versiune stabilă a zlib-ng, un fork de înaltă performanță al zlib

Este disponibilă versiunea 2.0 a bibliotecii zlib-ng, marcată ca prima versiune stabilă a proiectului (urmată de o versiune corectivă 2.0.1). Zlib-ng este compatibil cu zlib la nivel de API, dar oferă optimizări suplimentare, care nu au fost acceptate în depozitul oficial zlib din cauza unei abordări conservatoare în adoptarea modificărilor. De asemenea, este propus un API modernizat, bazat pe zlib, dar modificat pentru a simplifica portarea. Codul proiectului este scris în C și este distribuit sub licența Zlib.

Testele efectuate pe sisteme x86_64 au arătat că, în timpul operațiunilor de compresie, Zlib-ng este de aproximativ 4 ori mai rapid decât zlib și de 2,1 ori mai rapid decât gzip. La decomprimare, Zlib-ng este de aproximativ 2,4 ori mai rapid decât zlib și de 1,8 ori mai rapid decât gzip. Creșterea semnificativă a performanței compresiei/decomprimării a fost realizată în principal prin utilizarea instrucțiunilor vectoriale SSE*, AVX2, VSX și Neon.

Printre acestea, a fost adăugată o implementare a algoritmului de calcul al sumelor de control Adler32, optimizată cu ajutorul instrucțiunilor SSSE3, AVX2, Neon și VSX, implementarea CRC32-B bazată pe PCLMULQDQ și ACLE, tabele hash îmbunătățite, implementarea hash-ului Slide bazată pe SSE2, AVX2, Neon și VSX, operațiuni de comparare bazate pe SSE4.2 și AVX2. De asemenea, au fost incluse modificări orientate spre creșterea performanței, utilizate în fork-uri de la companiile Intel și Cloudflare. Procesul de lucru cu buffer-ele a fost optimizat. A fost adăugată suport pentru sistemele de construire CMake și NMake. Pentru testare au fost utilizate sisteme de integrare continuă.

În plus față de optimizările din Zlib-ng, au fost incluse patch-uri adunate în pachetele distribuțiilor și a fost curățat codul de soluții de ocolire utilizate în zlib pentru a susține compilatoare și platforme mai vechi, dar care împiedicau implementarea unor metode mai eficiente (de exemplu, restricțiile necesare pentru a susține sisteme de 16 biți și compilatoare incompatibile cu ANSI C). A fost realizată o muncă de identificare și corectare a erorilor detectate de analizatori statici, sisteme de fuzzing și instrumente pentru identificarea problemelor de lucru cu memoriile (AddressSanitizer și MemorySanitizer).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster