قدم مشروع Gentoo نظام إدارة الحزم Portage 3.0

استقر الافراج عن نظام إدارة الحزمة بورتاج 3.0المستخدمة في التوزيع جنتو لينكس. لخص هذا الموضوع العمل الطويل للانتقال إلى Python 3 وإيقاف دعم Python 2.7.

بالإضافة إلى نهاية دعم Python 2.7 ، كان هناك تغيير رئيسي آخر يتمثل في إدراج تحسينات، مما جعل من الممكن تسريع الحسابات المتعلقة بتحديد التبعيات بنسبة 50-60٪. ومن المثير للاهتمام ، أن بعض المطورين اقترحوا إعادة كتابة كود حل التبعية في C / C ++ أو Go لتسريع عمله ، لكنهم تمكنوا من حل المشكلة الحالية مع القليل من إراقة الدماء.

أظهر التنميط عن الكود الحالي أن معظم وقت الحساب يتم إنفاقه في استدعاء الدالتين use_reduce و catpkgsplit مع مجموعة متكررة من الوسائط (على سبيل المثال ، تم استدعاء وظيفة catpkgsplit من 1 إلى 5 ملايين مرة). لتسريع التخزين المؤقت لنتيجة هذه الوظائف تم تطبيق القواميس. كانت الوظيفة المدمجة lru_cache مثالية لتخزين ذاكرة التخزين المؤقت ، لكنها كانت متوفرة فقط في إصدارات Python بدءًا من 3.2. للتوافق مع الإصدارات السابقة ، تمت إضافة كعب لاستبدال lru_cache ، لكن قرار إنهاء دعم Python 2.7 في Portage 3.0 أدى إلى تبسيط المهمة إلى حد كبير وإزالة هذه الطبقة.

أدى استخدام ذاكرة التخزين المؤقت إلى تقليل وقت تنفيذ عملية "الظهور -uDvpU - مع-bdeps = yworld" على الكمبيوتر المحمول ThinkPad X220 من 5 دقائق و 20 ثانية إلى 3 دقائق و 16 ثانية (63٪). أظهرت الاختبارات على الأنظمة الأخرى زيادة في الأداء بنسبة 48٪ على الأقل.

حاول المطور الذي أعد التغيير أيضًا وضع نموذج أولي لرمز دقة التبعية في C ++ أو Rust ، ولكن تبين أن المهمة كانت صعبة للغاية ، حيث تطلبت نقل كمية كبيرة من التعليمات البرمجية ، وفي الوقت نفسه ، كان من المشكوك فيه أن ستكون النتيجة تستحق الجهد المبذول.

المصدر: opennet.ru

إضافة تعليق