Prva stabilna izdaja zlib-ng, visoko zmogljivega forka zlib

Izdaja knjižnice zlib-ng 2.0 je na voljo in je označena kot prva stabilna izdaja projekta (ki ji sledi popravljalna izdaja 2.0.1). Zlib-ng je združljiv z zlibom na ravni API-ja, vendar zagotavlja dodatne optimizacije, ki niso sprejete v uradni repozitorij zlib zaradi konzervativnega pristopa k sprejemanju sprememb. Poleg tega je predlagan posodobljen API, ki temelji na zlibu, vendar spremenjen za poenostavitev prenosa. Projektna koda je napisana v C in se distribuira pod licenco Zlib.

Testi, izvedeni na sistemih x86_64, so pokazali, da je pri izvajanju operacij stiskanja Zlib-ng približno 4-krat hitrejši od zliba in 2.1-krat hitrejši od gzipa. Pri dekompresiji je Zlib-ng približno 2.4-krat hitrejši od zliba in 1.8-krat hitrejši od gzipa. Znatno povečanje zmogljivosti kompresije/dekompresije je bilo doseženo predvsem zaradi uporabe vektorskih navodil SSE*, AVX2, VSX in Neon.

Vključno z dodano implementacijo algoritma kontrolne vsote Adler32, optimiziranega z navodili SSSE3, AVX2, Neon in VSX, implementacijo CRC32-B, ki temelji na PCLMULQDQ in ACLE, izboljšanimi tabelami zgoščevanja, implementacijo zgoščene diapozitivov, ki temelji na SSE2, AVX2, Neon in VSX, na osnovi primerjalnih operacij na SSE4.2 in AVX2. Sestava vključuje tudi spremembe, namenjene izboljšanju zmogljivosti, ki se uporabljajo v vilicah Intel in Cloudflare. Proces dela z medpomnilniki je bil optimiziran. Dodana podpora za sisteme gradnje CMake in NMake. Za testiranje se uporabljajo sistemi zvezne integracije.

Zlib-ng poleg optimizacij vključuje tudi popravke, ki so se nabrali v distribucijskih paketih, in čisti kodo rešitev, ki se uporabljajo v zlibu za podporo starejšim prevajalnikom in platformam, vendar preprečujejo izvajanje učinkovitejših metod (na primer omejitve, potrebne za podporo 16-bitni sistemi in prevajalniki C, ki niso ANSI). Delo je bilo opravljeno za odkrivanje in odpravljanje napak, ki so jih odkrili statični analizatorji, sistemi za testiranje fuzzinga in orodja za odkrivanje težav pri delu s pomnilnikom (AddressSanitizer in MemorySanitizer).

Vir: opennet.ru

Dodaj komentar