Zlib-ng-ren lehen bertsio egonkorra, zlib-ren errendimendu handiko sardexka

zlib-ng 2.0 liburutegiaren bertsioa eskuragarri dago eta proiektuaren lehen bertsio egonkor gisa markatuta dago (2.0.1 bertsio zuzentzailea du ondoren). Zlib-ng zlib-rekin bateragarria da API mailan, baina zlib biltegi ofizialean onartzen ez diren optimizazio gehigarriak eskaintzen ditu aldaketak onartzeko ikuspegi kontserbadorea dela eta. Gainera, API modernizatu bat proposatzen da, zlib-n oinarritutakoa, baina eraldatua eramatea errazteko. Proiektuaren kodea C-n idatzita dago eta Zlib lizentziapean banatzen da.

X86_64 sistemetan egindako probek erakutsi zuten konpresio-eragiketak egiterakoan, Zlib-ng zlib baino 4 aldiz azkarragoa dela gutxi gorabehera eta gzip baino 2.1 aldiz azkarragoa dela. Deskonprimitzen denean, Zlib-ng zlib baino 2.4 aldiz azkarragoa da eta gzip baino 1.8 aldiz azkarragoa da. SSE*, AVX2, VSX eta Neon instrukzio bektorialak erabiltzearen ondorioz konpresio/deskonpresioaren errendimenduaren igoera nabarmena lortu zen, batez ere.

Adler32 checksum algoritmoaren inplementazio gehigarria barne, SSSE3, AVX2, Neon eta VSX argibideak erabiliz optimizatua, PCLMULQDQ eta ACLEn oinarritutako CRC32-B inplementazioa, hash taula hobetuak, SSE2, AVX2, Neon eta VSXn oinarritutako Slide hash inplementazioa, Konparazio eragiketetan oinarrituta. SSE4.2 eta AVX2-n. Konposizioak errendimendua hobetzera zuzendutako aldaketak ere biltzen ditu, Intel eta Cloudflare-ren sardexketan erabiltzen direnak. Bufferekin lan egiteko prozesua optimizatu da. CMake eta NMake eraikitze sistemetarako euskarria gehitu da. Etengabeko integrazio sistemak erabiltzen dira probak egiteko.

Optimizazioez gain, Zlib-ng-ek banaketa paketeetan pilatutako adabakiak ere biltzen ditu eta zlib-en erabiltzen diren konponbideetatik garbitzen du kodea konpilatzaile eta plataforma zaharragoak onartzeko, baina metodo eraginkorragoak ezartzea eragozten dutenak (adibidez, onartzeko beharrezkoak diren murrizketak). 16 biteko sistemak eta ANSI C ez diren konpiladoreak). Analizatzaile estatikoek, fuzzing-en proba-sistemek eta memoriarekin lan egitean arazoak identifikatzeko tresnak (AddressSanitizer eta MemorySanitizer) identifikatu eta zuzentzeko lanak egin dira.

Iturria: opennet.ru

Gehitu iruzkin berria