Första stabila utgåvan av zlib-ng, en högpresterande gaffel av zlib

Utgåvan av zlib-ng 2.0-biblioteket är tillgänglig och markeras som den första stabila utgåvan av projektet (följt av en korrigerande utgåva 2.0.1). Zlib-ng är kompatibel med zlib på API-nivå, men ger ytterligare optimeringar som inte accepteras i det officiella zlib-förrådet på grund av en konservativ metod för att acceptera ändringar. Dessutom föreslås ett moderniserat API, baserat på zlib, men modifierat för att förenkla portering. Projektkoden är skriven i C och distribueras under Zlib-licensen.

Tester utförda på x86_64-system visade att när du utför komprimeringsoperationer är Zlib-ng ungefär 4 gånger snabbare än zlib och 2.1 gånger snabbare än gzip. Vid dekomprimering är Zlib-ng cirka 2.4 gånger snabbare än zlib och 1.8 gånger snabbare än gzip. En signifikant ökning av kompressions-/dekompressionsprestanda uppnåddes främst på grund av användningen av vektorinstruktioner SSE*, AVX2, VSX och Neon.

Inklusive tillagd implementering av Adler32-kontrollsummaalgoritmen, optimerad med SSSE3, AVX2, Neon och VSX-instruktioner, CRC32-B-implementering baserad på PCLMULQDQ och ACLE, förbättrade hashtabeller, Slide-hash-implementering baserad på SSE2, AVX2, Neon och VSX, Jämförelseoperationer baserade på SSE4.2 och AVX2. Sammansättningen innehåller också förändringar som syftar till att förbättra prestanda, som används i gafflar från Intel och Cloudflare. Processen att arbeta med buffertar har optimerats. Tillagt stöd för CMake och NMake byggsystem. Kontinuerliga integrationssystem används för testning.

Förutom optimeringar inkluderar Zlib-ng även patchar som har samlats i distributionspaket och rensar koden från lösningar som används i zlib för att stödja äldre kompilatorer och plattformar, men som förhindrar implementeringen av mer effektiva metoder (till exempel restriktioner som krävs för att stödja 16-bitars system och icke-ANSI C-kompilatorer). Arbete har utförts för att identifiera och korrigera fel som identifierats av statiska analysatorer, fuzzing testsystem och verktyg för att identifiera problem vid arbete med minne (AddressSanitizer och MemorySanitizer).

Källa: opennet.ru

Lägg en kommentar