เพิ่มคอมไพเลอร์ JIT ใน Python 3.13
- Brandt Bucher นักพัฒนาหลักของ CPython ได้ส่งพูลรีเควสต์เพื่อเพิ่มคอมไพเลอร์ JIT เข้าไปในสาขา Python 3.13
- การเปลี่ยนแปลงนี้จะเป็นหนึ่งในการเปลี่ยนแปลงครั้งใหญ่ที่สุดของอินเทอร์พรีเตอร์ CPython นับตั้งแต่อินเทอร์พรีเตอร์แบบ specialized adaptive ที่ถูกเพิ่มเข้ามาใน Python 3.11
JIT คืออะไร?
- JIT (Just in Time) compilation หมายถึงการออกแบบที่ทำการคอมไพล์เมื่อโค้ดถูกรันเป็นครั้งแรก
- JIT compiler คือคอมไพเลอร์ที่สร้าง machine code ซึ่งแตกต่างจาก AOT (Ahead of Time) compiler
- โค้ด Python จะถูกคอมไพล์เป็นไบต์โค้ดก่อน โดยไบต์โค้ดนี้ไม่มีความหมายโดยตรงต่อ CPU และจะถูกรันผ่านลูปอินเทอร์พรีเตอร์ไบต์โค้ดแบบพิเศษ
copy-and-patch JIT คืออะไร?
- copy-and-patch JIT เป็นแนวคิดที่ถูกเสนอในปี 2021 โดยออกแบบให้เป็นอัลกอริทึมที่รวดเร็วสำหรับรันไทม์ของภาษาแบบไดนามิก
- copy-and-patch JIT คือแนวคิดในการคัดลอกคำสั่งสำหรับแต่ละ instruction และเติมค่าอาร์กิวเมนต์ของไบต์โค้ดลงไป (patch)
ข้อดีและข้อเสียของ copy-and-patch JIT
- JIT compiler แบบ "เต็มรูปแบบ" จะคอมไพล์ไบต์โค้ดระดับสูงไปเป็นคำสั่งระดับต่ำของ intermediate language (IL) ขณะที่ copy-and-patch JIT จะคอมไพล์จากไบต์โค้ดไปเป็น machine code โดยใช้ชุดของเทมเพลต
- copy-and-patch JIT ไม่จำเป็นต้องรันสถาปัตยกรรม JIT compiler ที่ซับซ้อนภายใน Python runtime และเพียงแค่ต้องติดตั้งเครื่องมือ LLVM JIT บนเครื่องที่ใช้คอมไพล์ CPython จากซอร์ส
JIT นี้ทำงานอย่างไร?
- มีการขยาย API ที่เพิ่มใหม่ใน Python 3.13 เพื่อให้สามารถค้นพบ optimizer แบบเสียบปลั๊กได้ในขณะรัน
- JIT ใหม่นี้เป็น optimizer แบบเลือกใช้สำหรับสถาปัตยกรรมใหม่นี้
- เมื่อต้องคอมไพล์ CPython จากซอร์ส หากระบุแฟลก
--enable-experimental-jit ระบบจะสร้างเทมเพลต machine code สำหรับไบต์โค้ดของ Python
JIT นี้เร็วขึ้นหรือไม่?
- เบนช์มาร์กระยะแรกแสดงให้เห็นว่าประสิทธิภาพดีขึ้นประมาณ 2-9%
- JIT นี้เป็นรากฐานสำคัญของชุดการเพิ่มประสิทธิภาพที่จะช่วยยกระดับสมรรถนะของ Python ได้อย่างมาก
ความเห็นของ GN⁺
- คอมไพเลอร์ JIT ที่ถูกเพิ่มเข้ามาใน Python 3.13 เป็นการเปลี่ยนแปลงสำคัญที่ช่วยเพิ่มความเร็วในการรัน Python โดยเฉพาะสามารถเพิ่มประสิทธิภาพของงานที่ทำซ้ำได้
- copy-and-patch JIT นำเสนอแนวทางที่ล้ำสมัยในการเพิ่มประสิทธิภาพ โดยไม่จำเป็นต้องผสานสถาปัตยกรรม JIT ที่ซับซ้อนเข้าไปใน Python runtime ของผู้ใช้
- เทคโนโลยีนี้จะก่อให้เกิดการถกเถียงที่น่าสนใจในชุมชน Python และคาดว่าจะเปิดประตูบานใหม่ให้กับการเพิ่มประสิทธิภาพของ Python
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News