การถกเถียงเรื่องประสิทธิภาพของ Python 3.13: ผลลัพธ์ที่หลากหลายและการถดถอยที่น่าประหลาดใจ

ทีมบรรณาธิการ BigGo
การถกเถียงเรื่องประสิทธิภาพของ Python 3.13: ผลลัพธ์ที่หลากหลายและการถดถอยที่น่าประหลาดใจ

การเปิดตัว 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) อาจทำให้ความสนใจแยกออกจากการปรับปรุงประสิทธิภาพด้านอื่นๆ แม้ว่าสิ่งนี้อาจนำไปสู่การปรับปรุงที่สำคัญในการเปิดตัวในอนาคต