خوارزمية ضغط بدون ضياع وبرو دلتا الترميز ، مقارنة مع Xdelta3. تطوير مشروع المنزل

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


الصورة


الدخول


بعد نشر مقال عن التحسينات على خوارزمية Broo ، واجهنا عقبة في تحسين مستوى الضغط والأداء ، أي أنه كان من المستحيل تحسين مستوى الضغط دون التأثير على سرعة الضغط والعكس صحيح. سأحجز على الفور ، وتم إجراء التحسينات دون المساس بخصائص الخوارزمية الأخرى ، ولكن هذه التغييرات غير مهمة ، وسنكتب عن هذه التغييرات لاحقًا. لذا ، بعد ذلك ، فكرنا في المكان الذي يمكننا فيه تطبيق خبرتنا ومعرفتنا المتراكمة في اتجاه مماثل. ووقع الاختيار على ترميز دلتا .


ما هو ترميز دلتا؟


ترميز دلتا ( ترميز دلتا المهندس ) - طريقة لتمثيل البيانات في شكل الفرق ( دلتا ) بين البيانات التسلسلية بدلاً من البيانات نفسها.

من الناحية العملية ، إذا كانت خوارزميات الضغط تسمح لك بتقليل حجم الملف وتخزينه أو إعادة توجيهه دون أي تبعيات على الملفات الأخرى ، فإن خوارزميات ترميز دلتا تسمح لك بإنشاء تصحيح (اختلاف) بحجم أصغر بناءً على ملفين (مجموعة بيانات) وتطبيق التصحيح للملف ( مجموعة البيانات) 1 - الحصول على ملف (مجموعة بيانات) 2 .


أكثر التطبيقات شيوعًا لتشفير دلتا هو تحديث التطبيقات على الهواتف وأجهزة الكمبيوتر. بدلاً من تنزيل التطبيق بالكامل ثم استبدال الملفات ، يتم إنشاء تصحيح بحجم أصغر بكثير (اعتمادًا على عدد التغييرات) ، مما يسمح لك بتنزيل التحديث بشكل أسرع بكثير ، وتؤثر سرعة تطبيق التصحيح بشكل مباشر على سرعة تحديث التطبيق نفسه.


إذا كنت تعرف مكان استخدام ترميز دلتا آخر ، فاكتب في التعليقات.


حول التغييرات في خوارزمية Broo


كما قلنا ، هناك القليل منهم:


  • تمت إضافة دعم للملفات بحجم 2 ^ 64 لـ x64 و 2 ^ 32 لـ x32.
  • نسبة ضغط محسنة.

هذه التغييرات لا تزال في مرحلة التجريب والتصحيح. المشكلة الرئيسية - بعد إضافة دعم للملفات الكبيرة ، انخفضت سرعة إلغاء الضغط بنسبة 20٪ ، وهو أمر غير مقبول بالنسبة لنا. لذا ما زلنا نبحث عن حل.


فيما يلي نقدم جدولًا واحدًا فقط لمقارنات الإصدار القديم من الخوارزمية ، والتجريبية ، وبعض مستويات zstd. ملف XML من المقالة السابقة .


المعالج: Intel i7-7700HQ


الذاكرة: DDR4-2400


اسم الخوارزميةسرعة التعبئةسرعة تخفيف الضغطحجم الملف المضغوط ، بايت٪ من الأصل
memcpy17460 ميجابايت / ثانية17194 ميجابايت / ثانية5345280100.00
zstd 1.3.1 -6141 ميجابايت / ثانية1311 ميجابايت / ثانية58581010.96
إخوانه 1.211 ميجا بايت / ثانية1905 ميجا بايت / ثانية60683811.35
zstd 1.3.1 -5196 ميجابايت / ثانية1207 ميجابايت / ثانية61951011.59
zstd 1.3.1 -4357 ميجابايت / ثانية1214 ميجابايت / ثانية63758711.93
zstd 1.3.1 -3366 ميجابايت / ثانية1220 ميجابايت / ثانية63907311.96
إخوانه 1.114 ميجابايت / ثانية2005 ميغا بايت / ثانية64308412.03
zstd 1.3.1 -2394 ميجابايت / ثانية1108 ميجا بايت / ثانية69050812.92
zstd 1.3.1 -1479 ميجا بايت / ثانية1213 ميجابايت / ثانية70309313.15

مثل العديد من الخوارزميات ، تعتمد السرعة على المعالج ، كما يمكننا أن نرى في الجدول ، فإن سرعة إلغاء الضغط أكثر من 1.5 مرة أسرع من المستوى الأول zstd ، على معالج Intel i7-7700HQ. بينما في Intel i3-550 القديمة ، كانت سرعة الضغط تساوي تقريبًا سرعة الضغط zstd ، يمكنك رؤية جداول المقارنة هنا .


هذا يشير إلى أنه يمكنك تنفيذ تكامل أكثر إحكامًا مع المعالجات الفردية. يعتمد على تفاصيل المهمة.


دلتا للبرمجة وبرو


كما قد تكون خمنت ، فقد طورنا خوارزمية ترميز دلتا الخاصة بنا وأطلقنا عليها اسم DBroo (Delta Broo).


الخصائص والميزات الرئيسية:


  • دعم أحجام الملفات 2 ^ 64 لـ x64 و 2 ^ 32 لـ x32.
  • العمل مع البيانات الثنائية.
  • يسمح بالتعديل الجزئي للملف المرجعي الذي سيتم تطبيق التصحيح عليه.

هناك حلول جاهزة مثل diff ، bsdiff ، xdelta وغيرها. كان الهدف هو العثور على الأفضل (وكذلك بأسعار معقولة) في هذا الاتجاه والتنافس معه. تبين أن Xdelta3 هو المنافس الرئيسي بطريقة تجريبية بحتة. يوفر ضغطًا جيدًا وسرعة تطبيق التصحيح إلى حد ما. يستخدم Xdelta3 أيضًا للتحديثات إلى CyanogenMod (الآن LineageOS ).


الآن دعونا نلقي نظرة على جدول المقارنة بين DBroo و Xdelta3. كملف مرجعي ، يتم استخدام "xml" ، وكملف جديد ، يتم تعديله بشكل عشوائي.


اسم الخوارزميةسرعة إنشاء التصحيحسرعة تطبيق التصحيححجم التصحيح ، بايت٪ من الأصل
memcpy18052 ميجابايت / ثانية18665 ميجابايت / ثانية5326823100.00
Xdelta3 -9 + lzma5.40 ميجابايت / ثانية306 ميجابايت / ثانية1065422.00
Xdelta3 -6 + lzma20 ميجابايت / ثانية310 ميغا بايت / ثانية1219162.28
DBroo 1.07.40 ميجابايت / ثانية1600.00 ميجابايت / ثانية1230522.31
Xdelta3 -97.00 ميجابايت / ثانية688.24 ميجا بايت / ثانية1797323.37
Xdelta3 -636.71 ميجابايت / ثانية694.09 ميجا بايت / ثانية2016813.78
Xdelta3 -359.22 ميجابايت / ثانية637.43 ميجابايت / ثانية2372184.45
Xdelta3 -272.73 ميجابايت / ثانية582.75 ميجابايت / ثانية2792235.24
Xdelta3 -181.43 ميجابايت / ثانية540.53 ميجابايت / ثانية4788248.9

ملاحظة


يتم منح التطوير فقط لتلك المنتجات التي لديها طلب في السوق. لذلك ، نرحب بتعليقاتكم. قمنا أيضًا بإنشاء قناة برقية .


شكرا لك

Source: https://habr.com/ru/post/ar425255/


All Articles