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

الدخول
بعد نشر مقال عن التحسينات على خوارزمية Broo ، واجهنا عقبة في تحسين مستوى الضغط والأداء ، أي أنه كان من المستحيل تحسين مستوى الضغط دون التأثير على سرعة الضغط والعكس صحيح. سأحجز على الفور ، وتم إجراء التحسينات دون المساس بخصائص الخوارزمية الأخرى ، ولكن هذه التغييرات غير مهمة ، وسنكتب عن هذه التغييرات لاحقًا. لذا ، بعد ذلك ، فكرنا في المكان الذي يمكننا فيه تطبيق خبرتنا ومعرفتنا المتراكمة في اتجاه مماثل. ووقع الاختيار على ترميز دلتا .
ما هو ترميز دلتا؟
ترميز دلتا ( ترميز دلتا المهندس ) - طريقة لتمثيل البيانات في شكل الفرق ( دلتا ) بين البيانات التسلسلية بدلاً من البيانات نفسها.
من الناحية العملية ، إذا كانت خوارزميات الضغط تسمح لك بتقليل حجم الملف وتخزينه أو إعادة توجيهه دون أي تبعيات على الملفات الأخرى ، فإن خوارزميات ترميز دلتا تسمح لك بإنشاء تصحيح (اختلاف) بحجم أصغر بناءً على ملفين (مجموعة بيانات) وتطبيق التصحيح للملف ( مجموعة البيانات) 1 - الحصول على ملف (مجموعة بيانات) 2 .
أكثر التطبيقات شيوعًا لتشفير دلتا هو تحديث التطبيقات على الهواتف وأجهزة الكمبيوتر. بدلاً من تنزيل التطبيق بالكامل ثم استبدال الملفات ، يتم إنشاء تصحيح بحجم أصغر بكثير (اعتمادًا على عدد التغييرات) ، مما يسمح لك بتنزيل التحديث بشكل أسرع بكثير ، وتؤثر سرعة تطبيق التصحيح بشكل مباشر على سرعة تحديث التطبيق نفسه.
إذا كنت تعرف مكان استخدام ترميز دلتا آخر ، فاكتب في التعليقات.
حول التغييرات في خوارزمية Broo
كما قلنا ، هناك القليل منهم:
- تمت إضافة دعم للملفات بحجم 2 ^ 64 لـ x64 و 2 ^ 32 لـ x32.
- نسبة ضغط محسنة.
هذه التغييرات لا تزال في مرحلة التجريب والتصحيح. المشكلة الرئيسية - بعد إضافة دعم للملفات الكبيرة ، انخفضت سرعة إلغاء الضغط بنسبة 20٪ ، وهو أمر غير مقبول بالنسبة لنا. لذا ما زلنا نبحث عن حل.
فيما يلي نقدم جدولًا واحدًا فقط لمقارنات الإصدار القديم من الخوارزمية ، والتجريبية ، وبعض مستويات zstd. ملف XML من المقالة السابقة .
المعالج: Intel i7-7700HQ
الذاكرة: DDR4-2400
اسم الخوارزمية | سرعة التعبئة | سرعة تخفيف الضغط | حجم الملف المضغوط ، بايت | ٪ من الأصل |
---|
memcpy | 17460 ميجابايت / ثانية | 17194 ميجابايت / ثانية | 5345280 | 100.00 |
zstd 1.3.1 -6 | 141 ميجابايت / ثانية | 1311 ميجابايت / ثانية | 585810 | 10.96 |
إخوانه 1.2 | 11 ميجا بايت / ثانية | 1905 ميجا بايت / ثانية | 606838 | 11.35 |
zstd 1.3.1 -5 | 196 ميجابايت / ثانية | 1207 ميجابايت / ثانية | 619510 | 11.59 |
zstd 1.3.1 -4 | 357 ميجابايت / ثانية | 1214 ميجابايت / ثانية | 637587 | 11.93 |
zstd 1.3.1 -3 | 366 ميجابايت / ثانية | 1220 ميجابايت / ثانية | 639073 | 11.96 |
إخوانه 1.1 | 14 ميجابايت / ثانية | 2005 ميغا بايت / ثانية | 643084 | 12.03 |
zstd 1.3.1 -2 | 394 ميجابايت / ثانية | 1108 ميجا بايت / ثانية | 690508 | 12.92 |
zstd 1.3.1 -1 | 479 ميجا بايت / ثانية | 1213 ميجابايت / ثانية | 703093 | 13.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" ، وكملف جديد ، يتم تعديله بشكل عشوائي.
اسم الخوارزمية | سرعة إنشاء التصحيح | سرعة تطبيق التصحيح | حجم التصحيح ، بايت | ٪ من الأصل |
---|
memcpy | 18052 ميجابايت / ثانية | 18665 ميجابايت / ثانية | 5326823 | 100.00 |
Xdelta3 -9 + lzma | 5.40 ميجابايت / ثانية | 306 ميجابايت / ثانية | 106542 | 2.00 |
Xdelta3 -6 + lzma | 20 ميجابايت / ثانية | 310 ميغا بايت / ثانية | 121916 | 2.28 |
DBroo 1.0 | 7.40 ميجابايت / ثانية | 1600.00 ميجابايت / ثانية | 123052 | 2.31 |
Xdelta3 -9 | 7.00 ميجابايت / ثانية | 688.24 ميجا بايت / ثانية | 179732 | 3.37 |
Xdelta3 -6 | 36.71 ميجابايت / ثانية | 694.09 ميجا بايت / ثانية | 201681 | 3.78 |
Xdelta3 -3 | 59.22 ميجابايت / ثانية | 637.43 ميجابايت / ثانية | 237218 | 4.45 |
Xdelta3 -2 | 72.73 ميجابايت / ثانية | 582.75 ميجابايت / ثانية | 279223 | 5.24 |
Xdelta3 -1 | 81.43 ميجابايت / ثانية | 540.53 ميجابايت / ثانية | 478824 | 8.9 |
ملاحظة
يتم منح التطوير فقط لتلك المنتجات التي لديها طلب في السوق. لذلك ، نرحب بتعليقاتكم. قمنا أيضًا بإنشاء قناة برقية .
شكرا لك