أول إصدار مستقر لـ zlib-ng ، شوكة zlib عالية الأداء

يتوفر إصدار من مكتبة zlib-ng 2.0 ، والذي تم وضع علامة عليه كأول إصدار ثابت من المشروع (الإصدار التصحيحي 2.0.1 متاح بالفعل بعد ذلك). يتوافق Zlib-ng مع zlib على مستوى API ، ولكنه يوفر تحسينات إضافية غير مقبولة في مستودع zlib الرسمي نظرًا لنهجها المحافظ لقبول التغييرات. بالإضافة إلى ذلك ، تم اقتراح واجهة برمجة تطبيقات حديثة تعتمد على 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 .2 و AVXXNUMX. ويتضمن أيضًا تغييرات تحسين الأداء المستخدمة في مفترقات من Intel و Cloudflare. تحسين عملية العمل مع المخازن المؤقتة. دعم إضافي لأنظمة بناء CMake و NMake. تستخدم أنظمة التكامل المستمر للاختبار.

بالإضافة إلى التحسينات ، قام Zlib-ng أيضًا بتضمين التصحيحات المتراكمة في حزم التوزيع وتنظيف الكود من الحلول المستخدمة في zlib لدعم المجمعات والأنظمة الأساسية الأقدم ، ولكن يعيق تنفيذ طرق أكثر كفاءة (على سبيل المثال ، القيود المطلوبة لدعم 16 بت الأنظمة والمجمعين غير ANSI C). تم العمل على تحديد وإصلاح الأخطاء التي تم تحديدها بواسطة أجهزة التحليل الثابتة وأنظمة الاختبار المربكة وأدوات اكتشاف المشكلات عند العمل مع الذاكرة (AddressSanitizer و MemorySanitizer).

المصدر: opennet.ru

إضافة تعليق