3 poin oleh GN⁺ 2025-12-26 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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
    • Di lingkungan Visual Studio 2026, build dengan perintah berikut
      $env:PlatformToolset = "v145"
      ./PCbuild/build.bat --tail-call-interp -c Release -p x64 --pgo
      
  • Ke depannya, setelah pengembangan Python 3.15 stabil, distribusi binary resmi akan dirilis

Belum ada komentar.

Belum ada komentar.