ประกาศรุ่นเสถียร Portage 3.0 แล้ว

นักพัฒนาเมื่อเร็ว ๆ นี้ ผู้รับผิดชอบระบบการจัดการแพ็คเกจ การขนส่ง (บนการกระจาย Gentoo Linux) ประกาศเปิดตัวเวอร์ชันเสถียรเวอร์ชัน 3.0

ซึ่งใน, ความแปลกใหม่หลัก ของสาขาใหม่ที่นำเสนอนี้เป็นงานที่ดำเนินการในระยะยาวในวันที่ เปลี่ยนเป็น Python 3 และสิ้นสุดการรองรับ Python 2.7 (สิ่งที่เห็นมานานแล้วเนื่องจากสาขานี้ไม่ได้รับการสนับสนุนอย่างเป็นทางการเป็นเวลาหลายเดือน)

เรามีข่าวดี! โครงการ Gentoo Portage ได้ทำให้ตัวจัดการแพคเกจเวอร์ชัน 3.0 มีความเสถียรเมื่อไม่นานมานี้

มีอะไรใหม่ Portage เวอร์ชันที่สามนี้ลบการรองรับ Python 2.7 ซึ่งเป็นความพยายามอย่างต่อเนื่องในที่เก็บ Gentoo หลักโดยโครงการ Gentoo Python ตลอดปี 2020

นอกเหนือจากการยุติการรองรับ Python 2.7 แล้ว การเปลี่ยนแปลงที่สำคัญอีกครั้ง ที่โดดเด่นจากสาขาใหม่ที่เสถียรของ Portage 3.0 คือการรวมการเพิ่มประสิทธิภาพต่างๆ ที่พวกเขาอนุญาต ทำการคำนวณได้เร็วขึ้นมาก (ระหว่าง 50% ถึง 60%) ที่เกี่ยวข้องกับการกำหนดการอ้างอิง

สิ่งที่น่าสนใจคือนักพัฒนาบางคนแนะนำให้เขียนโค้ดการแก้ปัญหาการอ้างอิงใน C / C ++ ใหม่หรือ Go เพื่อเร่งความเร็วในการทำงาน แต่พวกเขาสามารถแก้ปัญหาที่มีอยู่ได้ด้วยความพยายาม

และนั่นก็คือ โปรไฟล์ของรหัสที่มีอยู่แสดงให้เห็นว่าเกือบตลอดเวลา การคำนวณ มีไว้เพื่อเรียกใช้ฟังก์ชัน use_reduce และ catpkgsplit ด้วยชุดอาร์กิวเมนต์ที่ทำซ้ำ (บุคคลที่นำงานนี้กล่าวถึงตัวอย่างเช่นฟังก์ชัน catpkgsplit ถูกเรียก 1 ถึง 5 ล้านครั้ง)

เมื่อตรวจพบปัญหาให้ระบุสิ่งนั้นเพื่อเร่งการคำนวณ ใช้แคชแล้ว จากผลของฟังก์ชันเหล่านี้โดยใช้พจนานุกรม

นอกจากนี้เนื่องจากแพทช์ที่ผู้ใช้จัดหาให้การอัปเดตเป็นเวอร์ชันล่าสุดของ Portage สามารถเพิ่มความเร็วในการคำนวณการพึ่งพาได้มากถึง 50-60% เราชอบที่จะเห็นชุมชนของเรามีส่วนร่วมในซอฟต์แวร์ของเรา! สำหรับรายละเอียดเพิ่มเติมโปรดดูโพสต์ Reddit จากสมาชิกชุมชนที่ให้บริการแพตช์ รักษาสุขภาพและทำอาหารกับ Gentoo!

นอกเหนือจากนั้น นอกจากนี้ยังตั้งข้อสังเกตว่าฟังก์ชันในตัวของ lru_cache นั้นเหมาะสมที่สุด สำหรับงานแคชนี้ แต่ใช้ได้เฉพาะในเวอร์ชัน Python ตั้งแต่ 3.2

เพื่อความเข้ากันได้แบบย้อนหลังได้มีการเพิ่มต้นขั้วเพื่อแทนที่ lru_cache แต่การตัดสินใจยุติการสนับสนุน Python 2.7 ใน Portage 3.0 ทำให้งานง่ายขึ้นอย่างมากและทำให้สามารถข้ามเลเยอร์นี้ได้

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

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

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

ในที่สุด หากคุณต้องการทราบข้อมูลเพิ่มเติม เกี่ยวกับบันทึกประจำรุ่นของสาขาที่มั่นคงนี้คุณสามารถตรวจสอบรายละเอียดได้ ในลิงค์ต่อไปนี้.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา