Primo rilascio stabile di zlib-ng, un fork ad alte prestazioni di zlib

È disponibile il rilascio della libreria zlib-ng 2.0, che è contrassegnato come il primo rilascio stabile del progetto (seguente è già disponibile il rilascio corretivo 2.0.1). Zlib-ng è compatibile con zlib a livello API, ma offre ottimizzazioni aggiuntive non accettate nel repository ufficiale di zlib a causa dell'approccio conservativo all'adozione delle modifiche. Inoltre, è stata proposta una API modernizzata, basata su zlib, ma modificata per semplificare il porting. Il codice del progetto è scritto in C e distribuito sotto la licenza Zlib.

I test condotti su sistemi x86_64 hanno dimostrato che, durante le operazioni di compressione, Zlib-ng è circa 4 volte più veloce di zlib e 2,1 volte più veloce di gzip. Durante la decompressione, Zlib-ng è circa 2,4 volte più veloce di zlib e 1,8 volte più veloce di gzip. Questo sostanziale aumento delle prestazioni di compressione/decompressione è stato principalmente ottenuto grazie all'uso di istruzioni vettoriali SSE*, AVX2, VSX e Neon.

Sono state aggiunte implementazioni dell'algoritmo per il calcolo delle somme di controllo Adler32, ottimizzate tramite le istruzioni SSSE3, AVX2, Neon e VSX, un'implementazione CRC32-B basata su PCLMULQDQ e ACLE, tabelle hash avanzate, e un'implementazione dell'hash Slide basata su SSE2, AVX2, Neon e VSX, oltre a operazioni di confronto basate su SSE4.2 e AVX2. Sono stati inoltre inclusi miglioramenti mirati alle prestazioni utilizzati nei fork da aziende come Intel e Cloudflare. È stato ottimizzato il processo di gestione dei buffer. È stata aggiunta la supporto per i sistemi di build CMake e NMake. I test sono stati effettuati utilizzando sistemi di integrazione continua.

Oltre alle ottimizzazioni in Zlib-ng, sono stati inclusi anche i patch accumulati nei pacchetti delle distribuzioni e sono stati ripuliti i codici da workaround utilizzati in zlib per supportare vecchi compilatori e piattaforme, ma che ostacolano l'implementazione di metodi più efficienti (ad esempio, le limitazioni necessarie per supportare sistemi a 16 bit e compilatori non compatibili con ANSI C). È stata svolta un'attività di identificazione e correzione di errori rilevati da analizzatori statici, sistemi di fuzzing e strumenti per identificare problemi nella gestione della memoria (AddressSanitizer e MemorySanitizer).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster