Unang stable na release ng zlib-ng, isang high-performance na tinidor ng zlib

Ang release ng zlib-ng 2.0 library ay available at minarkahan bilang ang unang stable na release ng proyekto (sinusundan ng corrective release 2.0.1). Ang Zlib-ng ay katugma sa zlib sa antas ng API, ngunit nagbibigay ng mga karagdagang pag-optimize na hindi tinatanggap sa opisyal na repositoryo ng zlib dahil sa isang konserbatibong diskarte sa pagtanggap ng mga pagbabago. Bilang karagdagan, ang isang modernized na API ay iminungkahi, batay sa zlib, ngunit binago upang pasimplehin ang pag-port. Ang code ng proyekto ay nakasulat sa C at ipinamahagi sa ilalim ng lisensya ng Zlib.

Ang mga pagsubok na isinagawa sa mga x86_64 system ay nagpakita na kapag nagsasagawa ng mga operasyon ng compression, ang Zlib-ng ay humigit-kumulang 4 na beses na mas mabilis kaysa sa zlib at 2.1 beses na mas mabilis kaysa sa gzip. Kapag nagde-decompress, ang Zlib-ng ay humigit-kumulang 2.4 beses na mas mabilis kaysa sa zlib at 1.8 beses na mas mabilis kaysa sa gzip. Ang isang makabuluhang pagtaas sa pagganap ng compression/decompression ay nakamit pangunahin dahil sa paggamit ng mga tagubilin sa vector SSE*, AVX2, VSX at Neon.

Kasama ang karagdagang pagpapatupad ng Adler32 checksum algorithm, na-optimize gamit ang SSSE3, AVX2, Neon at VSX na mga tagubilin, CRC32-B na pagpapatupad batay sa PCLMULQDQ at ACLE, pinahusay na hash table, Slide hash na pagpapatupad batay sa SSE2, AVX2, Neon at VSX , Paghahambing na mga operasyon batay sa SSE4.2 at AVX2. Kasama rin sa komposisyon ang mga pagbabago na naglalayong mapabuti ang pagganap, na ginagamit sa mga tinidor mula sa Intel at Cloudflare. Ang proseso ng pagtatrabaho sa mga buffer ay na-optimize. Nagdagdag ng suporta para sa CMake at NMake build system. Ang tuluy-tuloy na mga sistema ng pagsasama ay ginagamit para sa pagsubok.

Bilang karagdagan sa mga pag-optimize, ang Zlib-ng ay nagsasama rin ng mga patch na naipon sa mga pakete ng pamamahagi at nililinis ang code mula sa mga workaround na ginagamit sa zlib upang suportahan ang mga mas lumang compiler at platform, ngunit pinipigilan ang pagpapatupad ng mas mahusay na mga pamamaraan (halimbawa, mga paghihigpit na kinakailangan upang suportahan 16-bit system at non-ANSI C compiler). Nagsagawa ng trabaho upang matukoy at maitama ang mga error na natukoy ng mga static na analyzer, fuzzing testing system, at mga tool para sa pagtukoy ng mga problema kapag nagtatrabaho gamit ang memory (AddressSanitizer at MemorySanitizer).

Pinagmulan: opennet.ru

Magdagdag ng komento