Una nga lig-on nga pagpagawas sa zlib-ng, usa ka taas nga performance nga tinidor sa zlib

Ang pagpagawas sa zlib-ng 2.0 nga librarya anaa ug gimarkahan isip unang stable nga pagpagawas sa proyekto (gisundan sa corrective release 2.0.1). Ang Zlib-ng nahiuyon sa zlib sa lebel sa API, apan naghatag dugang nga pag-optimize nga wala gidawat sa opisyal nga repository sa zlib tungod sa konserbatibo nga pamaagi sa pagdawat sa mga pagbag-o. Dugang pa, gisugyot ang usa ka moderno nga API, base sa zlib, apan giusab aron mapasimple ang pag-port. Ang code sa proyekto gisulat sa C ug giapod-apod ubos sa lisensya sa Zlib.

Ang mga pagsulay nga gihimo sa x86_64 nga mga sistema nagpakita nga sa pagbuhat sa mga operasyon sa compression, ang Zlib-ng gibana-bana nga 4 ka beses nga mas paspas kay sa zlib ug 2.1 ka beses nga mas paspas kay sa gzip. Kung nag-decompress, ang Zlib-ng mga 2.4 ka beses nga mas paspas kaysa zlib ug 1.8 ka beses nga mas paspas kaysa sa gzip. Ang usa ka mahinungdanon nga pagtaas sa compression/decompression performance nakab-ot nag-una tungod sa paggamit sa mga instruksyon sa vector SSE*, AVX2, VSX ug Neon.

Naglakip sa dugang nga pagpatuman sa Adler32 checksum algorithm, na-optimize gamit ang SSSE3, AVX2, Neon ug VSX nga mga instruksyon, CRC32-B nga pagpatuman base sa PCLMULQDQ ug ACLE, gipaayo nga hash tables, Slide hash nga pagpatuman base sa SSE2, AVX2, Neon ug VSX, Comparison operations based sa SSE4.2 ug AVX2. Ang komposisyon naglakip usab sa mga pagbag-o nga gitumong sa pagpalambo sa performance, nga gigamit sa mga tinidor gikan sa Intel ug Cloudflare. Ang proseso sa pagtrabaho sa mga buffer na-optimize. Gidugang nga suporta alang sa mga sistema sa pagtukod sa CMake ug NMake. Ang padayon nga mga sistema sa panagsama gigamit alang sa pagsulay.

Gawas pa sa mga pag-optimize, ang Zlib-ng naglakip usab sa mga patch nga natipon sa mga pakete sa pag-apod-apod ug gilimpyohan ang code gikan sa mga workaround nga gigamit sa zlib aron suportahan ang mga tigulang nga compiler ug platform, apan nga nagpugong sa pagpatuman sa labi ka episyente nga mga pamaagi (pananglitan, mga pagdili nga kinahanglan aron suportahan 16-bit system ug non-ANSI C compiler). Gihimo ang trabaho aron mahibal-an ug matul-id ang mga sayup nga nahibal-an sa mga static analyzer, fuzzing testing system, ug mga himan alang sa pag-ila sa mga problema kung nagtrabaho gamit ang memorya (AddressSanitizer ug MemorySanitizer).

Source: opennet.ru

Idugang sa usa ka comment