Unua stabila eldono de zlib-ng, alta rendimenta forko de zlib

La eldono de la biblioteko zlib-ng 2.0 estas disponebla kaj estas markita kiel la unua stabila eldono de la projekto (sekvita de korekta eldono 2.0.1). Zlib-ng estas kongrua kun zlib ĉe la API-nivelo, sed disponigas kromajn optimumigojn kiuj ne estas akceptitaj en la oficiala zlib-deponejo pro konservativa aliro al akceptado de ŝanĝoj. Aldone, modernigita API estas proponita, bazita sur zlib, sed modifita por simpligi portadon. La projektkodo estas skribita en C kaj distribuita sub la permesilo Zlib.

Testoj faritaj sur x86_64-sistemoj montris, ke kiam oni faras kunpremajn operaciojn, Zlib-ng estas proksimume 4 fojojn pli rapida ol zlib kaj 2.1 fojojn pli rapida ol gzip. Dum malkunpremado, Zlib-ng estas proksimume 2.4 fojojn pli rapida ol zlib kaj 1.8 fojojn pli rapida ol gzip. Signifa pliiĝo en kunpremado/malkunprema agado estis atingita ĉefe pro la uzo de vektoraj instrukcioj SSE*, AVX2, VSX kaj Neon.

Inkluzive de aldonita efektivigo de la algoritmo de ĉeksumo Adler32, optimumigita per instrukcioj SSSE3, AVX2, Neon kaj VSX, CRC32-B-efektivigo bazita sur PCLMULQDQ kaj ACLE, plibonigitaj hashtabeloj, Slide hash-efektivigo bazita sur SSE2, AVX2, Neon kaj VSX, Komparoperacioj bazitaj sur sur SSE4.2 kaj AVX2. La komponado ankaŭ inkluzivas ŝanĝojn celantajn plibonigi rendimenton, uzatajn en forkoj de Intel kaj Cloudflare. La procezo labori kun bufroj estis optimumigita. Aldonita subteno por CMake kaj NMake konstrusistemoj. Kontinuaj integrigaj sistemoj estas uzataj por testado.

Krom optimumigoj, Zlib-ng ankaŭ inkluzivas pecetojn, kiuj akumuliĝis en distribuaj pakoj kaj purigas la kodon de solvoj uzataj en zlib por subteni pli malnovajn kompililojn kaj platformojn, sed kiuj malhelpas la efektivigon de pli efikaj metodoj (ekzemple limigoj necesaj por subteni). 16-bitaj sistemoj kaj ne-ANSI C-kompililoj). Laboro estis efektivigita por identigi kaj korekti erarojn identigitajn de senmovaj analiziloj, fuzantaj testaj sistemoj kaj iloj por identigi problemojn kiam oni laboras kun memoro (AddressSanitizer kaj MemorySanitizer).

fonto: opennet.ru

Aldoni komenton