- Interpreter tail-calling CPython menunjukkan performa sekitar 15% lebih cepat dibanding metode sebelumnya di lingkungan Windows x86-64
- Peningkatan performa sekitar 5% juga terkonfirmasi di macOS AArch64 (XCode Clang), sementara di Windows memanfaatkan fitur eksperimental MSVC 2026
- Dalam benchmark pyperformance, sebagian besar pengujian menunjukkan peningkatan kecepatan, dan beberapa meningkat hingga 78%
- Penyebab utama peningkatan performa dianalisis berasal dari reset heuristik optimisasi compiler dan peningkatan inlining
- Saat rilis resmi Python 3.15, fitur ini dijadwalkan aktif secara default pada build berbasis Visual Studio 2026
Peningkatan performa interpreter tail-calling
- Interpreter tail-calling CPython diukur sekitar 15% lebih cepat daripada interpreter switch-case yang ada di Windows x86-64
- Berdasarkan pyperformance, rata-rata geometrik meningkat 15~16%
- Beberapa benchmark meningkat hingga 78%, sementara sedikit kasus justru 60% lebih lambat
- Di macOS AArch64 (XCode Clang), terkonfirmasi peningkatan performa sekitar 5%
- Hasil ini berlaku dengan asumsi tidak ada perubahan selama siklus pengembangan Python 3.15
Perbandingan struktur interpreter
- Metode implementasi interpreter berbasis C dibagi menjadi tiga: switch-case, computed goto, dan tail-call threaded
- switch-case: menangani percabangan per instruksi
- computed goto: ekstensi GCC/Clang yang melompat langsung ke alamat percabangan
- tail-call threaded: memisahkan tiap handler bytecode menjadi fungsi, lalu melakukan tail call ke fungsi berikutnya
- Di masa lalu, compiler C tidak menjamin optimisasi tail call sehingga ada risiko stack overflow
- Atribut
__attribute__((musttail)) milik Clang dan [[msvc::musttail]] milik MSVC memungkinkan forced tail call
Hasil build MSVC 2026 untuk Windows
- Pada build CPython yang menggunakan fitur eksperimental MSVC, sebagian besar benchmark menunjukkan peningkatan kecepatan
- Contoh hasil:
spectralnorm: 1.48x
nbody: 1.35x
bm_django_template: 1.18x
xdsl: 1.14x
- Sudah dicerminkan secara resmi dalam dokumen “What’s New” Python 3.15
- Interpreter tail-calling tersedia pada build Visual Studio 2026 (MSVC 18)
- Library Python murni sekitar 15% lebih cepat, skrip kecil hingga 40% lebih cepat
Penyebab peningkatan performa
- Tail calling menginisialisasi ulang heuristik optimisasi compiler, sehingga mendorong pembuatan kode yang lebih efisien
- Loop interpreter CPython sebelumnya tersusun sebagai satu fungsi tunggal sekitar 12.000 baris, sehingga optimisasi inlining sering gagal
- Banyak kasus compiler menolak inlining untuk menghindari pembesaran ukuran kode
- Pada pendekatan tail calling, fungsi dipisah sehingga fungsi sederhana bisa diproses inline
- Sebagai contoh, fungsi sederhana seperti
PyStackRef_CLOSE_SPECIALIZED dapat di-inline
- Fenomena yang sama juga dilaporkan pada build PGO (profile-guided optimization)
Cara build dan penggunaan
- Saat ini hanya build dari source yang memungkinkan
- Ke depannya, setelah pengembangan Python 3.15 stabil, distribusi binary resmi akan dirilis
Belum ada komentar.