Eerste stabiele vrystelling van zlib-ng, 'n hoëprestasievurk van zlib

'n Vrystelling van die zlib-ng 2.0-biblioteek is beskikbaar wat gemerk is as die eerste stabiele vrystelling van die projek (regstellende vrystelling 2.0.1 is reeds volgende beskikbaar). Zlib-ng is versoenbaar met zlib op die API-vlak, maar bied bykomende optimalisering wat nie in die amptelike zlib-bewaarplek aanvaar word nie as gevolg van sy konserwatiewe benadering tot die aanvaarding van veranderinge. Daarbenewens is 'n gemoderniseerde API gebaseer op zlib voorgestel, maar gewysig om oordrag makliker te maak. Die projekkode is in C geskryf en onder die Zlib-lisensie versprei.

Toetse wat op x86_64-stelsels uitgevoer is, toon dat Zlib-ng ongeveer 4 keer vinniger is as zlib en 2.1 keer vinniger as gzip wanneer kompressiebewerkings uitgevoer word. By dekomprimering is Zlib-ng ongeveer 2.4 keer vinniger as zlib en 1.8 keer vinniger as gzip. 'n Beduidende toename in kompressie/dekompressie prestasie is behaal hoofsaaklik as gevolg van die gebruik van SSE*, AVX2, VSX en Neon vektor instruksies.

Bygevoeg implementering van Adler32 kontrolesom algoritme geoptimaliseer met SSSE3, AVX2, Neon en VSX instruksies, CRC32-B implementering gebaseer op PCLMULQDQ en ACLE, verbeterde hash tabelle, implementering van Slide hash gebaseer op SSE2, AVX2, Neon en VSX, vergelyking bedrywighede gebaseer op SSE4.2 .2 en AVXXNUMX. Dit sluit ook prestasieverbeterende veranderinge in wat in vurke van Intel en Cloudflare gebruik word. Geoptimaliseer die proses om met buffers te werk. Bygevoeg ondersteuning vir CMake en NMake bou stelsels. Deurlopende integrasiestelsels word vir toetsing gebruik.

Benewens optimalisering, het Zlib-ng ook pleisters ingesluit wat in verspreidingspakkette opgehoop is en die kode skoongemaak van oplossings wat in zlib gebruik word om ouer samestellers en platforms te ondersteun, maar belemmer die implementering van meer doeltreffende metodes (byvoorbeeld beperkings wat nodig is om 16-bis te ondersteun stelsels en nie-ANSI C-samestellers). Werk is gedoen om foute te identifiseer en reg te stel wat deur statiese ontleders, fuzzing-toetsstelsels en gereedskap geïdentifiseer is om probleme op te spoor wanneer daar met geheue gewerk word (AddressSanitizer en MemorySanitizer).

Bron: opennet.ru

Voeg 'n opmerking