- Kompiler JIT CPython mencapai performa 11~12% lebih cepat di macOS AArch64 dan 5~6% di x86_64 Linux, melampaui target lebih awal
- Pada versi 3.13~3.14, JIT lebih lambat daripada interpreter, tetapi performanya meningkat pesat berkat pengembangan berbasis komunitas dan perbaikan struktur
- Upaya eksperimental seperti trace recording dan reference count elimination menjadi titik balik utama
- Kontributor inti seperti Savannah Ostrowski, Mark Shannon, Diego Russo, Brandt Bucher serta banyak peserta baru berkolaborasi bersama
- Hasil kali ini menunjukkan bahwa pengembangan yang dipimpin komunitas dan budaya kolaborasi dapat memberi dampak nyata pada peningkatan performa open source
Status peningkatan performa JIT CPython
- Mencatat performa 11~12% lebih cepat di macOS AArch64 dan 5~6% di x86_64 Linux
- Nilai pengukuran berdasarkan rata-rata geometrik, dan pada beberapa benchmark hasilnya bervariasi dari 20% lebih lambat hingga lebih dari 100% lebih cepat
- Dukungan free-threading masih belum selesai, dengan target untuk versi 3.15/3.16
- JIT pada versi 3.13~3.14 lebih lambat daripada interpreter, tetapi pada versi ini berhasil mencapai peningkatan kecepatan yang berarti
Pengembangan JIT yang berpusat pada komunitas
- Setelah penghentian sponsor utama tim Faster CPython pada 2025, proyek beralih ke sistem pengembangan yang dipimpin komunitas
- Target: peningkatan 5% di 3.15, peningkatan 10% di 3.16, serta dukungan free-threading
- Untuk mengurangi bus factor, setiap tahap (frontend, middle-end, backend) diupayakan memiliki minimal 2 maintainer
- Masalah yang kompleks dipecah menjadi bagian-bagian kecil agar kontributor baru bisa ikut berpartisipasi
- Brandt Bucher memisahkan unit kerja melalui
mega-issues
- 11 kontributor mengubah instruksi interpreter agar lebih ramah terhadap optimasi JIT
- Budaya mendorong kontribusi dan berbagi pencapaian membantu menjaga keberlanjutan partisipasi
- Hasilnya, performa di x86_64 Linux meningkat dari 1% menjadi 3~4%
Titik balik teknis utama
Trace recording
- Pada core sprint CPython, dilakukan peralihan ke frontend berbasis tracing
- Awalnya 6% lebih lambat, tetapi performa membaik setelah diperkenalkannya struktur dual dispatch
- Kecepatan interpreter dasar tetap terjaga sambil meminimalkan peningkatan ukuran interpreter
- Dengan penerapan trace recording, cakupan kode JIT meningkat 50%, lalu efisiensi optimasi ikut membaik
Reference count elimination
- Terinspirasi dari pekerjaan optimasi bytecode oleh Matt Page
- Performa meningkat dengan menghapus branch yang muncul saat pengurangan reference count
- Terbukti bahwa menghapus satu branch saja sudah memberi efek pengurangan biaya kumulatif
- Mudah diparalelkan, dan digunakan untuk melatih kontributor baru sebagai tugas pembelajaran struktur JIT
Infrastruktur dan susunan tim
- Savannah Ostrowski mengoperasikan infrastruktur pengukuran performa JIT dengan 4 mesin
- Hasil eksekusi JIT harian memungkinkan deteksi dini terhadap regression performa
- Diego Russo menangani peningkatan kompatibilitas JIT untuk hardware ARM dan profiler
- Brandt Bucher membangun fondasi backend machine code untuk menurunkan hambatan masuk bagi kontributor baru
Kolaborasi dan pertukaran pengetahuan
- Mendapat masukan terkait PyPy dari CF Bolz-Tereick, sehingga pemahaman desain JIT meningkat
- Interaksi dengan para ahli compiler seperti Max Bernstein membantu menjaga motivasi berkelanjutan dan pertumbuhan teknis
- Pengalaman menganalisis kode PyPy turut berkontribusi pada peningkatan kualitas JIT CPython
Kesimpulan
- JIT di Python 3.15 merupakan hasil gabungan dari kolaborasi komunitas, eksperimen teknis, dan peningkatan infrastruktur
- Ini membuktikan bahwa manusia, keberuntungan, dan budaya kolaborasi adalah pendorong utama inovasi performa open source
Belum ada komentar.