تعمل هذه البرامج النصية البسيطة على قياس مكتبات ضغط zlib المختلفة للضاغط المتوازي Pigz. يمكن أن يستخدم الضغط المتوازي مراكز متعددة متوفرة في أجهزة الكمبيوتر الحديثة لضغط البيانات بسرعة. يمكن دمج هذه التقنية مع CloudFlare zlib الذي يعمل على تسريع الضغط باستخدام ميزات أخرى للأجهزة الحديثة. هنا، قمت بتكييف البرنامج النصي لتقييم ضغط .gz لصور الدماغ بتنسيق NIfTI. من الشائع بالنسبة لأدوات مثل AFNI وFSL حفظ صور NIfTI باستخدام ضغط gzip (ملفات .nii.gz). تنتج أساليب التصوير بالرنين المغناطيسي الحديثة، مثل النطاقات المتعددة، مجموعات بيانات ضخمة، مما يؤدي إلى قضاء وقت طويل في ضغط هذه الصور.
يوضح الرسم البياني أدناه أداء Pigz مقابل Pigz الافتراضي أحادي الخيوط، بحيث يشير الرقم "1" إلى الأداء المكافئ. يتم عرض الأداء لثلاثة مستويات ضغط: سريع (3، خط الأساس 35 ثانية)، الافتراضي (6، 50 ثانية) والبطيء (9، 183 ثانية). يوضح المحور الأفقي عدد الخيوط المخصصة للضغط. عند مستويات الضغط المنخفضة (1)، تكون جميع الأدوات سريعة نسبيًا، حيث تكون القراءة والكتابة من القرص هي العامل الذي يحد من المعدل. في مستويات الضغط الأعلى، تعمل مجموعة الخيوط المتعددة وتحسينات CloudFlare على تسريع الأداء بشكل كبير مقارنة بملف gzip الافتراضي. كان نظام الاختبار عبارة عن Intel Xeon Platinum 8260 ذو 24 نواة (48 خيطًا):
يوضح الرسم البياني التالي كل أداة تستخدم العدد المفضل لها من الخيوط على جهاز كمبيوتر رباعي النواة (8 خيوط) لضغط مجموعة Silesia الشهيرة. تتفوق جميع إصدارات pigz على gzip المترابط الوحيد للنظام. يمكن للمرء أن يرى أن تنسيق zstd الحديث يهيمن على تنسيق gzip الأقدم والأبسط. لقد تم اعتماد gzip على نطاق واسع في العديد من المجالات (على سبيل المثال، في تصوير الدماغ يتم استخدامه لـ NIfTI وNRRD وAFNI). إن بساطة تنسيق gzip تعني أنه من السهل على المطورين تضمين الدعم في أدواتهم. لذلك، يلعب gzip مكانة مهمة في المجتمع. ومع ذلك، فإن التنسيقات الحديثة التي تم تصميمها للأجهزة الحديثة والاستفادة من التقنيات الجديدة لها فوائد متأصلة.
يتيح لنا البرنامج النصي 5decompress.sh
مقارنة سرعة إلغاء الضغط. فك الضغط أسرع من الضغط. ومع ذلك، لا يمكن لإلغاء الضغط باستخدام gzip الاستفادة من عدة سلاسل رسائل، وهو بشكل عام أبطأ من تنسيقات الضغط الحديثة. في هذا الاختبار، تقوم جميع أدوات gz بفك ضغط تلك البيانات. في المقابل، يعمل bzip2 وztd على فك ضغط البيانات التي تم ضغطها إلى حجم أصغر. يتم حساب السرعة بالميجابايت في الثانية بناءً على الحجم الذي تم فك ضغطه. من المعتاد أن يستخدم الضغط الأكثر إحكاما خوارزميات أكثر تعقيدا، لذا فإن المقارنة بين التنسيقات تمثل تحديًا. بغض النظر، من بين أدوات gz، يُظهر zlib-ng أداءً فائقًا في إلغاء الضغط:
السرعة (ميجابايت/ثانية) | Pigz-CF | Pigz-ng | Pigz-Sys | com.gzip | pbzip2 | pbzip2 |
---|---|---|---|---|---|---|
تخفيف الضغط | 278 | 300 | 274 | 244 | 122 | 236 |
قم بتشغيل المعيار باستخدام أمر مثل ما يلي:
1compile.sh
2test.sh
5decompress.sh
1compile.sh
بتنزيل وإنشاء نسخ من Pigz باستخدام متغيرات zlib المختلفة (system، CloudFlare، ng). كما يقوم أيضًا بتنزيل نماذج من الصور لاختبار الضغط، وتحديدًا نماذج فحوصات التصوير بالرنين المغناطيسي التي يتم نسخها إلى corpus
المجلدات. يجب عليك تشغيل هذا البرنامج النصي مرة واحدة أولاً، قبل البرامج النصية الأخرى. يمكن تشغيل كافة البرامج النصية الأخرى بشكل مستقل عن بعضها البعض.2test.sh
سرعة الإصدارات المختلفة من Pigz بالإضافة إلى gzip المفرد الخاص بالنظام. يمكنك استبدال الملفات الموجودة في مجلد corpus
بأخرى أكثر تمثيلاً لمجموعة البيانات الخاصة بك.3slowtest.sh
بتنزيل مجموعة Silesia واختبار سرعة الضغط. هذه المجموعة شائعة: المعيار 1، المعيار 2، المعيار 3.4verify.sh
باختبار الضغط وإلغاء الضغط لكل طريقة، مما يضمن قدرتها على تخزين البيانات دون فقدان.5decompress.sh
بتقييم سرعة إلغاء الضغط. بشكل عام، تنسيق gzip بطيء في الضغط ولكنه سريع في فك الضغط (خاصة بالمقارنة مع التنسيقات التي تم تطويرها في نفس الوقت). ومع ذلك، فإن إلغاء الضغط باستخدام gzip بطيء مقارنة بـ zstd الحديث. علاوة على ذلك، في حين أن ضغط gzip يمكن أن يستفيد من المعالجة المتوازية، فإن إلغاء الضغط لا يفعل ذلك. إحدى الميزات المهمة لهذا البرنامج النصي هي أن كل متغير من zlib يساهم بملفات مضغوطة في مجموعة الاختبار، ثم يتم اختبار كل أداة في هذه المجموعة الكاملة. وهذا يضمن أننا نقارن بين المهام المتشابهة، حيث أن بعض طرق ضغط zlib قد تولد ملفات أصغر على حساب إنشاء ملفات أبطأ في فك الضغط.6speed_size.sh
بين الإصدارات المختلفة من Pigz وgzip وzstd وbzip2 لضغط مجموعة Silesia. يتم اختبار كل أداة بمستويات ضغط مختلفة، ولكن دائمًا باستخدام العدد المفضل من الخيوط. blocksize
الذي يتوافق مع عدد المواضيع للضغط. يتضمن هذا المستودع البرنامج النصي test_mgzip.py
لتقييم هذه الأداة.