Prvé stabilné vydanie zlib-ng, vysoko výkonnej vidlice zlib

Vydanie knižnice zlib-ng 2.0 je dostupné a je označené ako prvé stabilné vydanie projektu (po ňom nasleduje opravné vydanie 2.0.1). Zlib-ng je kompatibilný so zlib na úrovni API, ale poskytuje ďalšie optimalizácie, ktoré nie sú akceptované do oficiálneho úložiska zlib kvôli konzervatívnemu prístupu k prijímaniu zmien. Okrem toho sa navrhuje modernizované API založené na zlib, ale upravené tak, aby zjednodušilo portovanie. Kód projektu je napísaný v jazyku C a distribuovaný pod licenciou Zlib.

Testy vykonané na systémoch x86_64 ukázali, že pri vykonávaní operácií kompresie je Zlib-ng približne 4-krát rýchlejší ako zlib a 2.1-krát rýchlejší ako gzip. Pri dekompresii je Zlib-ng asi 2.4-krát rýchlejší ako zlib a 1.8-krát rýchlejší ako gzip. Výrazné zvýšenie kompresného/dekompresného výkonu bolo dosiahnuté najmä vďaka použitiu vektorových inštrukcií SSE*, AVX2, VSX a Neon.

Vrátane pridanej implementácie algoritmu kontrolného súčtu Adler32, optimalizovaného pomocou inštrukcií SSSE3, AVX2, Neon a VSX, implementácie CRC32-B založenej na PCLMULQDQ a ACLE, vylepšených hašovacích tabuliek, implementácie hašovania snímky na báze SSE2, AVX2, Neon a VSX, porovnávacích operácií na SSE4.2 a AVX2. Súčasťou zloženia sú aj zmeny zamerané na zlepšenie výkonu, použité vo forkoch od Intelu a Cloudflare. Proces práce s vyrovnávacími pamäťami bol optimalizovaný. Pridaná podpora pre zostavovacie systémy CMake a NMake. Na testovanie sa používajú systémy kontinuálnej integrácie.

Okrem optimalizácií obsahuje Zlib-ng aj záplaty, ktoré sa nahromadili v distribučných balíkoch a čistí kód od náhradných riešení používaných v zlib na podporu starších kompilátorov a platforiem, ktoré však bránia implementácii efektívnejších metód (napríklad obmedzenia potrebné na podporu 16-bitové systémy a kompilátory bez ANSI C). Bola vykonaná práca na identifikácii a oprave chýb identifikovaných statickými analyzátormi, fuzzing testovacími systémami a nástrojmi na identifikáciu problémov pri práci s pamäťou (AddressSanitizer a MemorySanitizer).

Zdroj: opennet.ru

Pridať komentár