PyPy Menunjukkan Peningkatan Performa 4x Lipat Sementara CPython JIT Kesulitan Memberikan Percepatan yang Dijanjikan

Tim Komunitas BigGo
PyPy Menunjukkan Peningkatan Performa 4x Lipat Sementara CPython JIT Kesulitan Memberikan Percepatan yang Dijanjikan

Komunitas Python sedang ramai membahas peningkatan performa, khususnya seputar compiler JIT Cinder dari Facebook dan implementasi PyPy yang sering diabaikan. Meskipun banyak perhatian tertuju pada integrasi kompilasi JIT ke dalam interpreter CPython utama, banyak developer mempertanyakan mengapa solusi yang sudah terbukti berhasil tidak mendapat pengakuan yang layak.

PyPy Memberikan Peningkatan Performa Nyata

PyPy , sebuah implementasi Python yang ditulis dalam Python itu sendiri, telah secara diam-diam memberikan peningkatan performa yang mengesankan selama lebih dari satu dekade. Anggota komunitas melaporkan percepatan dramatis di lingkungan produksi, dengan beberapa melihat waktu pemrosesan turun dari jam menjadi menit hanya dengan mengganti interpreter. Implementasi ini kini mendukung fitur Python 3.12 dan mempertahankan kompatibilitas dengan sebagian besar paket Python .

Benchmark dunia nyata menunjukkan PyPy secara konsisten memberikan peningkatan performa 4x lipat di berbagai beban kerja. Aplikasi web menggunakan Flask melihat peningkatan serupa, dengan satu developer melaporkan 8.127 transaksi per detik dibandingkan dengan 4.512 transaksi per detik CPython dalam lingkungan pengujian yang sama.

PyPy: Sebuah implementasi Python yang menggunakan kompilasi Just-In-Time untuk mencapai peningkatan performa signifikan dibandingkan interpreter CPython standar

Perbandingan Performa

  • PyPy : peningkatan kecepatan rata-rata 4x dibanding CPython
  • Cinder JIT : peningkatan kecepatan 4x pada beberapa workload (hasil tidak konsisten)
  • Benchmark PyPy Flask : 8.127 transaksi/detik vs CPython 4.512 transaksi/detik
  • Python vs bahasa compiled: 5-50x lebih lambat dari C/C++ , 5-20x lebih lambat dari Go/Rust

CPython JIT Menghadapi Tantangan Implementasi

Proyek Cinder dari Facebook mewakili pendekatan berbeda untuk optimasi Python . Setelah 18 bulan pengembangan, tim tersebut mencapai percepatan 5x lipat dalam fork interpreter kustom mereka. Namun, ketika mereka mencoba menggabungkan optimasi ini kembali ke dalam codebase CPython utama, peningkatan performa hilang sepenuhnya.

Upaya CPython JIT saat ini, yang dipimpin oleh Mark Shannon , berfokus pada spesialisasi tipe dan teknik optimasi adaptif. Meskipun mencapai percepatan 4x lipat pada beberapa beban kerja, hasilnya tetap tidak konsisten di berbagai aplikasi. Beberapa program melihat peningkatan minimal, dan JIT saat ini hanya mendukung arsitektur AMD64 .

Spesialisasi tipe: Sebuah teknik optimasi di mana instruksi kode disesuaikan untuk tipe data tertentu guna meningkatkan kecepatan eksekusi

Keterbatasan JIT CPython

  • Hanya mendukung arsitektur AMD64
  • Memerlukan pelatihan optimisasi berbasis profil (PGO)
  • Peningkatan performa yang tidak konsisten di berbagai aplikasi
  • Target peningkatan kecepatan 5x kali lipat dikurangi menjadi ~50% peningkatan selama 4 tahun
  • Tantangan integrasi saat menggabungkan optimisasi kembali ke basis kode utama

Komunitas Mempertanyakan Arah Python

Sebagian besar komunitas Python mengungkapkan frustrasi dengan fokus pada peningkatan CPython sementara PyPy tetap kurang dimanfaatkan. Meskipun rekam jejak PyPy yang terbukti dan paritas fitur saat ini dengan Python 3.12 , adopsi tetap terbatas. Banyak developer masih keliru percaya bahwa PyPy hanya mendukung subset Python atau berkinerja buruk dengan ekstensi C .

PyPy rata-rata 4x lebih cepat namun 95% komunitas python mengabaikannya. Sudah ada paritas fitur dengan 3.12 dan sebagian besar library pypi berfungsi.

Kekhawatiran kompatibilitas yang dulu mengganggu PyPy sebagian besar telah teratasi. Versi PyPy modern menangani modul ekstensi C , meskipun mungkin berjalan lebih lambat daripada kode Python murni karena overhead emulasi reference counting.

Status Kompatibilitas PyPy

  • Mendukung fitur Python 3.12
  • Kompatibel dengan sebagian besar pustaka PyPI
  • Menangani modul ekstensi C (dengan sedikit overhead performa)
  • Bekerja dengan framework populer seperti Flask dan Django
  • Satu-satunya keterbatasan: Beberapa panggilan API privat CPython yang digunakan oleh pustaka tertentu

Masa Depan Performa Python

Pendekatan Python Software Foundation terhadap peningkatan performa terus berpusat pada modifikasi CPython daripada merangkul solusi yang sudah ada seperti PyPy . Strategi ini membingungkan banyak anggota komunitas, terutama mengingat kesuksesan PyPy yang terbukti di lingkungan produksi.

Keputusan Microsoft baru-baru ini untuk menghentikan tim Faster CPython semakin memperumit lanskap. Kepergian tim tersebut merupakan kemunduran bagi upaya optimasi CPython dan menyoroti tantangan implementasi kompilasi JIT dalam interpreter Python utama.

Perdebatan ini mencerminkan pertanyaan yang lebih luas tentang masa depan Python : apakah melanjutkan jalur sulit mengoptimalkan CPython atau merangkul implementasi alternatif yang sudah memberikan peningkatan performa yang dibutuhkan developer. Seiring peran Python dalam pengembangan perangkat lunak terus berkembang, keputusan ini menjadi semakin penting untuk daya saing jangka panjang bahasa tersebut.

Referensi: Following up on the Python JIT