การเปิดตัว Python 3.13 ได้จุดประเด็นการถกเถียงที่น่าสนใจในชุมชนนักพัฒนา เกี่ยวกับประสิทธิภาพการทำงาน โดยนักพัฒนาบางส่วนรายงานว่าพบการถดถอยที่ไม่คาดคิดเมื่อเทียบกับเวอร์ชันก่อนหน้า โดยเฉพาะ Python 3.11
การวิเคราะห์ประสิทธิภาพ
การทดสอบประสิทธิภาพและการอภิปรายในชุมชนล่าสุดได้เผยให้เห็นภาพรวมที่ซับซ้อนของ Python 3.13 จากการทดสอบที่นักพัฒนาแบ่งปันบนแพลตฟอร์มต่างๆ:
ประสิทธิภาพของ List Comprehension
-
รายการขนาดเล็ก : Python 3.13 แสดงการปรับปรุงที่ดีขึ้นอย่างมีนัยสำคัญ
- ใช้เวลาประมาณ 9.54 นาโนวินาทีต่อการดำเนินการสำหรับ 100 elements
- เร็วขึ้นเกือบ 40% เมื่อเทียบกับ Python 3.12 สำหรับการทำงานขนาดเล็ก
-
รายการขนาดใหญ่ : ผลลัพธ์หลากหลาย
- มีการปรับปรุงเพียงเล็กน้อยสำหรับรายการที่มีมากกว่า 10,000 รายการ
- นักพัฒนาบางคนรายงานว่าประสิทธิภาพลดลงในบางกรณี
- นักพัฒนาคนหนึ่งรายงานว่าพบการลดลงของประสิทธิภาพอย่างฉับพลันในรายการที่มีขนาดประมาณ 10,000 รายการ
ปัญหาเฉพาะแพลตฟอร์ม
การทดสอบบน MacOS ARM พบผลลัพธ์ที่น่ากังวล:
- ประสิทธิภาพช้าลง 6-9% สำหรับการทำงานกับ list บางประเภทเมื่อเทียบกับ Python 3.11
- พบการทำงานช้าลงอย่างมีนัยสำคัญถึง 57% สำหรับการทำงานกับ array.array โดยเฉพาะบน MacOS ARM (ตามที่รายงานใน Python issue #123540)
ประสิทธิภาพการจัดรูปแบบสตริง
มีการอภิปรายที่น่าสนใจเกี่ยวกับประสิทธิภาพการจัดรูปแบบสตริง ผลการทดสอบแสดงให้เห็นว่า:
## F-strings (เร็วที่สุดสำหรับกรณีทั่วไป)
fexample # ~61.1 นาโนวินาทีต่อรอบ
## %-formatting
example %s % var # ~124 นาโนวินาทีต่อรอบ
## .format()
example {}.format(var) # ~181 นาโนวินาทีต่อรอบ
การพัฒนาในแง่บวก
แม้จะมีความกังวลเรื่องประสิทธิภาพ แต่ Python 3.13 ก็นำมาซึ่งการปรับปรุงที่น่ายินดีหลายประการ:
- เพิ่มฟังก์ชันการทำงานของ REPL
- ปรับปรุงความสามารถในการดีบัก
- ข้อความแสดงข้อผิดพลาดที่ดีขึ้น โดยเฉพาะเป็นประโยชน์สำหรับนักพัฒนามือใหม่
- ปรับปรุงการทำงานกับระบบไฟล์ผ่าน shutil อย่างมีนัยสำคัญ
- การปรับปรุงหลายอย่างที่เกี่ยวข้องกับการทำงานแบบพร้อมกัน
มุมมองของชุมชน
การอภิปรายเรื่องประสิทธิภาพสะท้อนให้เห็นการถกเถียงที่กว้างขึ้นเกี่ยวกับวิวัฒนาการของ Python ในขณะที่นักพัฒนาบางคนแสดงความกังวลเกี่ยวกับการถดถอยของประสิทธิภาพ คนอื่นๆ ชี้ให้เห็นว่าการใช้งาน Python ทั่วไปมักพึ่งพา C-extension modules สำหรับการทำงานที่ต้องการประสิทธิภาพสูง การมุ่งเน้นการปรับปรุงประสบการณ์ของนักพัฒนาและข้อความแสดงข้อผิดพลาดที่ดีขึ้นแสดงให้เห็นถึงแนวทางการพัฒนาภาษาที่สมดุล
การทำงานอย่างต่อเนื่องในโครงการ GILectomy (การกำจัด Global Interpreter Lock) อาจทำให้ความสนใจแยกออกจากการปรับปรุงประสิทธิภาพด้านอื่นๆ แม้ว่าสิ่งนี้อาจนำไปสู่การปรับปรุงที่สำคัญในการเปิดตัวในอนาคต