zlib-nin yüksək performanslı çəngəlinin ilk stabil buraxılışı

Zlib-ng 2.0 kitabxanasının buraxılışı mövcuddur və layihənin ilk stabil buraxılışı kimi qeyd olunur (ardından düzəldici buraxılış 2.0.1). Zlib-ng API səviyyəsində zlib ilə uyğun gəlir, lakin dəyişikliklərin qəbuluna konservativ yanaşma səbəbindən rəsmi zlib repozitoriyasına qəbul edilməyən əlavə optimallaşdırmalar təqdim edir. Əlavə olaraq, zlib-ə əsaslanan, lakin daşınmanı asanlaşdırmaq üçün dəyişdirilmiş modernləşdirilmiş API təklif olunur. Layihə kodu C dilində yazılmışdır və Zlib lisenziyası altında paylanmışdır.

x86_64 sistemlərində aparılan sınaqlar göstərdi ki, sıxılma əməliyyatlarını yerinə yetirərkən Zlib-ng zlib-dən təxminən 4 dəfə, gzip-dən isə 2.1 dəfə sürətlidir. Dekompressiya zamanı Zlib-ng zlib-dən təxminən 2.4 dəfə və gzip-dən 1.8 dəfə daha sürətlidir. Sıxılma/dekompressiya performansında əhəmiyyətli artım əsasən SSE*, AVX2, VSX və Neon vektor təlimatlarının istifadəsi hesabına əldə edilmişdir.

SSSE32, AVX3, Neon və VSX təlimatları ilə optimallaşdırılmış Adler2 yoxlama alqoritminin əlavə tətbiqi, PCLMULQDQ və ACLE əsasında CRC32-B tətbiqi, təkmilləşdirilmiş hash cədvəlləri, SSE2, AVX2, Neon və VSX əsasında slayd hash tətbiqi, Müqayisə əməliyyatları əsasında SSE4.2 və AVX2-də. Kompozisiyaya həmçinin Intel və Cloudflare-dən çəngəllərdə istifadə olunan performansın yaxşılaşdırılmasına yönəlmiş dəyişikliklər də daxildir. Buferlərlə işləmə prosesi optimallaşdırılıb. CMake və NMake qurma sistemləri üçün əlavə dəstək. Test üçün davamlı inteqrasiya sistemləri istifadə olunur.

Optimallaşdırmalara əlavə olaraq, Zlib-ng, həmçinin paylama paketlərində toplanmış və köhnə kompilyatorları və platformaları dəstəkləmək üçün zlib-də istifadə olunan müvəqqəti həll yollarından kodu təmizləyən, lakin daha səmərəli metodların (məsələn, dəstəklənməsi üçün zəruri olan məhdudiyyətlər) həyata keçirilməsinə mane olan yamaqları da əhatə edir. 16-bit sistemlər və qeyri-ANSI C kompilyatorları). Statik analizatorlar, fuzzing test sistemləri və yaddaşla işləyərkən problemləri müəyyən etmək üçün alətlər (AddressSanitizer və MemorySanitizer) tərəfindən müəyyən edilmiş səhvləri müəyyən etmək və düzəltmək üçün işlər aparılmışdır.

Mənbə: opennet.ru

Добавить комментарий