Zstd: يؤدي ZSTD_c_targetCBlockSize == ZSTD_TARGETCBLOCKSIZE_MAX إلى ضغط سيئ بشكل غير محتمل

تم إنشاؤها على ٢٨ أبريل ٢٠٢٠  ·  3تعليقات  ·  مصدر: facebook/zstd

يؤدي استخدام ZSTD_CCtxParams_setParameter(cctxParams, ZSTD_c_targetCBlockSize, ZSTD_TARGETCBLOCKSIZE_MAX) إلى ضغط سيئ بشكل غير محتمل للمصادر ذات الحد الأدنى من التسلسلات الكبيرة (> 1 كيلوبايت).

استخدام تسلسل متكرر لـ CSS مصغر:
مع تحديد targetCBlockSize == ZSTD_TARGETBLOCKSIZE_MAX:
bootstrap.min.css : 97.31% (13862462 => 13488900 bytes, bootstrap.min.css.zst)
بدون تحديد targetCBlockSize:
bootstrap.min.css : 0.15% (13862462 => 20476 bytes, bootstrap.min.css.zst)

ملاحظة إضافية: لقد واجهت هذا نتيجة لمحاولة تقليل حجم الكتلة عند فك الضغط بخصوص # 2093. إذا بدلاً من تعيين TargetCompressedBlockSize ، يتم تقليل ZSTD_BLOCKSIZEMAX نفسه ، مما يؤدي بدوره إلى تقليل الحد الأقصى لحجم الكتل أيضًا ، يكون له تأثير أقل بكثير على الضغط.


تم الحصول على المصدر المستخدم من خلال التسلسل التالي:
rm bootstrap.min.css; wget https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css && for i in {1..5}; do cat bootstrap.min.css >> bootstrap_2.min.css; cat bootstrap_2.min.css >> bootstrap.min.css; done && rm bootstrap_2.min.css

bug release-blocking

التعليق الأكثر فائدة

dciliske لقد قمت بإعادة إنتاج المشكلة في المستوى 22. إنها غير موجودة في zstd-1.4.4 ، لذلك لم يتم تحويلها إلى إصدار. يبدو أنني قدمته في https://github.com/facebook/zstd/pull/1947. سوف أصلحه قريبا.

ال 3 كومينتر

سأطرح سؤالاً هنا بشأن الهندسة المعمارية: هل يتسبب targetCBlockSize في أن يفترض الضاغط أنه سيتم تغذيته في برنامج فك ضغط لن يكون لديه أي معرفة خارج الكتلة التي يتلقاها؟ أي هو برنامج فك ضغط تدفق عازلة بالكامل؟

targetCBlockSize "يُقصد" استخدامه في سيناريوهات البث حيث تريد تقليل الوقت لفك ضغط البايت الأول. لذلك إذا كان حجم الحزمة لديك هو 4 كيلوبايت ، فيمكنك ضبط حجم الكتلة المستهدفة على 4 كيلوبايت ومحاولة جعل كل حزمة قابلة للضغط ، بدلاً من الاضطرار إلى الانتظار حتى 128 كيلو بايت كاملة قبل فك ضغط البايت الأول.

لست متأكدًا مما يحدث في هذا السيناريو ، ولكن مع الإدخال ، يجب أن يكون من السهل إعادة الإنتاج والإصلاح. سوف أنظر فيه قريبا شكرًا مرة أخرى على التقرير والتعليمات التفصيلية الخاصة بإعادة العرض!

dciliske لقد قمت بإعادة إنتاج المشكلة في المستوى 22. إنها غير موجودة في zstd-1.4.4 ، لذلك لم يتم تحويلها إلى إصدار. يبدو أنني قدمته في https://github.com/facebook/zstd/pull/1947. سوف أصلحه قريبا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

animalize picture animalize  ·  3تعليقات

AbdulrahmanAltabba picture AbdulrahmanAltabba  ·  3تعليقات

vade picture vade  ·  3تعليقات

icebluey picture icebluey  ·  3تعليقات

indygreg picture indygreg  ·  3تعليقات