اولین انتشار پایدار zlib-ng، یک فورک با کارایی بالا از zlib

انتشار کتابخانه zlib-ng 2.0 در دسترس است و به عنوان اولین نسخه پایدار پروژه مشخص شده است (به دنبال آن نسخه اصلاحی 2.0.1). Zlib-ng با zlib در سطح API سازگار است، اما بهینه سازی های اضافی را ارائه می دهد که به دلیل رویکرد محافظه کارانه برای پذیرش تغییرات، در مخزن رسمی zlib پذیرفته نمی شوند. علاوه بر این، یک API مدرن پیشنهاد شده است که مبتنی بر zlib است، اما برای ساده‌سازی انتقال اصلاح شده است. کد پروژه به زبان C نوشته شده و تحت مجوز 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، جداول هش بهبود یافته، اجرای هش اسلاید بر اساس SSE2، AVX2، Neon و VSX، مقایسه بر اساس در SSE4.2 و AVX2. این ترکیب همچنین شامل تغییراتی با هدف بهبود عملکرد است که در فورک های Intel و Cloudflare استفاده می شود. فرآیند کار با بافرها بهینه شده است. پشتیبانی از سیستم های ساخت CMake و NMake اضافه شده است. سیستم های یکپارچه سازی پیوسته برای آزمایش استفاده می شود.

علاوه بر بهینه‌سازی‌ها، Zlib-ng همچنین شامل وصله‌هایی است که در بسته‌های توزیع انباشته شده‌اند و کد را از راه‌حل‌های مورد استفاده در zlib برای پشتیبانی از کامپایلرها و پلتفرم‌های قدیمی‌تر پاک می‌کند، اما از اجرای روش‌های کارآمدتر جلوگیری می‌کند (به عنوان مثال، محدودیت‌های لازم برای پشتیبانی سیستم های 16 بیتی و کامپایلرهای غیر ANSI C). کار برای شناسایی و تصحیح خطاهای شناسایی شده توسط آنالایزرهای استاتیک، سیستم های تست فازی و ابزارهایی برای شناسایی مشکلات هنگام کار با حافظه (AddressSanitizer و MemorySanitizer) انجام شده است.

منبع: opennet.ru

اضافه کردن نظر