Første stabile utgivelse av zlib-ng, en høyytelsesgaffel av zlib

Utgivelsen av zlib-ng 2.0-biblioteket er tilgjengelig og er merket som den første stabile utgivelsen av prosjektet (etterfulgt av en korrigerende utgivelse 2.0.1). Zlib-ng er kompatibel med zlib på API-nivå, men gir ekstra optimaliseringer som ikke aksepteres i det offisielle zlib-depotet på grunn av en konservativ tilnærming til å akseptere endringer. I tillegg foreslås en modernisert API, basert på zlib, men modifisert for å forenkle portering. Prosjektkoden er skrevet i C og distribuert under Zlib-lisensen.

Tester utført på x86_64-systemer viste at når du utfører komprimeringsoperasjoner, er Zlib-ng omtrent 4 ganger raskere enn zlib og 2.1 ganger raskere enn gzip. Ved dekomprimering er Zlib-ng omtrent 2.4 ganger raskere enn zlib og 1.8 ganger raskere enn gzip. En betydelig økning i kompresjons-/dekompresjonsytelse ble oppnådd hovedsakelig på grunn av bruken av vektorinstruksjoner SSE*, AVX2, VSX og Neon.

Inkludert ekstra implementering av Adler32-sjekksumalgoritmen, optimalisert ved bruk av SSSE3, AVX2, Neon og VSX-instruksjoner, CRC32-B-implementering basert på PCLMULQDQ og ACLE, forbedrede hashtabeller, Slide-hash-implementering basert på SSE2, AVX2, Neon og VSX, Sammenligningsoperasjoner basert på SSE4.2 og AVX2. Sammensetningen inkluderer også endringer rettet mot å forbedre ytelsen, brukt i gafler fra Intel og Cloudflare. Prosessen med å jobbe med buffere er optimalisert. Lagt til støtte for CMake og NMake byggesystemer. Kontinuerlige integrasjonssystemer brukes til testing.

I tillegg til optimaliseringer inkluderer Zlib-ng også patcher som har samlet seg i distribusjonspakker og renser koden fra løsninger som brukes i zlib for å støtte eldre kompilatorer og plattformer, men som forhindrer implementering av mer effektive metoder (for eksempel restriksjoner som er nødvendige for å støtte 16-bits systemer og ikke-ANSI C-kompilatorer). Det er utført arbeid for å identifisere og korrigere feil identifisert av statiske analysatorer, uklare testsystemer og verktøy for å identifisere problemer ved arbeid med minne (AddressSanitizer og MemorySanitizer).

Kilde: opennet.ru

Legg til en kommentar