โครงการ Gentoo แนะนำระบบการจัดการแพ็คเกจ Portage 3.0

มีเสถียรภาพ การเปิดตัวระบบการจัดการแพ็คเกจ พอร์เทจ3.0ใช้ในการจำหน่าย Gentoo Linux. เธรดที่นำเสนอสรุปงานระยะยาวเกี่ยวกับการเปลี่ยนไปใช้ Python 3 และการสิ้นสุดการสนับสนุนสำหรับ Python 2.7

นอกจากการสิ้นสุดการสนับสนุน Python 2.7 แล้ว การเปลี่ยนแปลงที่สำคัญอีกประการหนึ่งคือการรวมเอา การเพิ่มประสิทธิภาพซึ่งทำให้สามารถเร่งความเร็วการคำนวณที่เกี่ยวข้องกับการพิจารณาการพึ่งพาได้ 50-60% สิ่งที่น่าสนใจคือ นักพัฒนาบางคนแนะนำให้เขียนโค้ดการแก้ไขการขึ้นต่อกันใหม่ใน C/C++ หรือ Go เพื่อเพิ่มความเร็วในการดำเนินการ แต่พวกเขาก็สามารถแก้ไขปัญหาที่มีอยู่ได้โดยใช้ความพยายามเพียงเล็กน้อย

การทำโปรไฟล์โค้ดที่มีอยู่แสดงให้เห็นว่าเวลาในการคำนวณส่วนใหญ่ถูกใช้ไปในการเรียกฟังก์ชัน use_reduce และ catpkgsplit ด้วยชุดอาร์กิวเมนต์ที่ซ้ำกัน (เช่น ฟังก์ชัน catpkgsplit ถูกเรียก 1 ถึง 5 ล้านครั้ง) เพื่อเร่งความเร็วสิ่งต่าง ๆ จึงมีการใช้การแคชผลลัพธ์ของฟังก์ชันเหล่านี้โดยใช้พจนานุกรม ตัวเลือกที่ดีที่สุดสำหรับการจัดเก็บแคชคือฟังก์ชัน lru_cache ในตัว แต่มีเฉพาะใน Python ที่เริ่มตั้งแต่เวอร์ชัน 3.2 เท่านั้น เพื่อให้เข้ากันได้กับเวอร์ชันก่อนหน้า เราได้เพิ่ม stub เพื่อแทนที่ lru_cache แต่การตัดสินใจยุติการสนับสนุน Python 2.7 ใน Portage 3.0 ทำให้งานนี้ง่ายขึ้นอย่างมาก และทำให้สามารถทำได้โดยไม่ต้องใช้เลเยอร์นี้

การใช้แคชช่วยลดเวลาดำเนินการของการดำเนินการ “emerge -uDvpU —with-bdeps=y @world” บนแล็ปท็อป ThinkPad X220 จาก 5 นาที 20 วินาที เหลือ 3 นาที 16 วินาที (63%) การทดสอบบนระบบอื่นแสดงให้เห็นประสิทธิภาพเพิ่มขึ้นอย่างน้อย 48%

นักพัฒนาที่เตรียมการเปลี่ยนแปลงยังได้พยายามใช้ต้นแบบของรหัสการแก้ไขการพึ่งพาใน C ++ หรือ Rust แต่งานนั้นยากเกินไปเพราะจำเป็นต้องย้ายรหัสจำนวนมาก และสงสัยว่าผลลัพธ์จะคุ้มค่ากับความพยายาม .

ที่มา: opennet.ru

เพิ่มความคิดเห็น