Першы стабільны выпуск zlib-ng, высокапрадукцыйнага форка zlib

Даступны рэліз бібліятэкі zlib-ng 2.0 які адзначаны як першы стабільны выпуск праекта (следам ужо даступны карэкціруючы выпуск 2.0.1). Zlib-ng сумяшчальны з zlib на ўзроўні API, але падае дадатковыя аптымізацыі, не прынятыя ў афіцыйны рэпазітар zlib з-за кансерватыўнага падыходу да прыёму змен. Дадаткова прапанаваны мадэрнізаваны API, заснаваны на zlib, але зменены для спрашчэння партавання. Код праекту напісаны на мове Сі і распаўсюджваецца пад ліцэнзіяй Zlib.

Праведзеныя на сістэмах x86_64 тэсты паказалі, што пры выкананні аперацый сціску Zlib-ng прыкладна ў 4 разы хутчэй zlib і ў 2.1 разы хутчэй gzip. Пры распакаванні Zlib-ng прыкладна ў 2.4 разы хутчэй zlib і ў 1.8 раз хутчэй gzip. Дамагчыся істотнага падвышэння прадукцыйнасці сціску/распакоўкі галоўным чынам атрымалася дзякуючы задзейнічанню вектарных інструкцый SSE*, AVX2, VSX і Neon.

У тым ліку дададзена рэалізацыя алгарытму вылічэння кантрольных сум Adler32, аптымізаваная пры дапамозе інструкцый SSSE3, AVX2, Neon і VSX, рэалізацыя CRC32-B на базе PCLMULQDQ і ACLE, удасканаленыя хэш-табліцы, рэалізацыя хэша Slide на базе SSE , аперацыі параўнання на базе SSE2 і AVX2. У склад таксама ўключаны нацэленыя на павышэнне прадукцыйнасці змены, якія выкарыстоўваюцца ў форках ад кампаній Intel і Cloudflare. Аптымізаваны працэс працы з буферамі. Дададзена падтрымка зборачных сістэм CMake і NMake. Для тэсціравання задзейнічаны сістэмы бесперапыннай інтэграцыі.

Акрамя аптымізацый у Zlib-ng таксама ўключаны назапашаныя ў пакетах дыстрыбутываў патчы і праведзена чыстка кода ад абыходных рашэнняў, выкарыстоўваных у zlib для падтрымкі старых кампілятараў і платформаў, але якія замінаюць рэалізацыі больш эфектыўных метадаў (напрыклад, абмежаванні, неабходныя для падтрымкі 16-разрадных сістэм і несумяшчальных з ANSI C кампілятараў). Праведзена праца па выяўленні і выпраўленні памылак, выяўленых статычнымі аналізатарамі, сістэмамі fuzzing-тэставанні, і прыладамі для выяўлення праблем пры працы з памяццю (AddressSanitizer і MemorySanitizer).

Крыніца: opennet.ru

Дадаць каментар