بالإضافة إلى نهاية دعم Python 2.7 ، كان هناك تغيير رئيسي آخر يتمثل في إدراج
أظهر التنميط عن الكود الحالي أن معظم وقت الحساب يتم إنفاقه في استدعاء الدالتين 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