Komuniti Python sedang hangat membincangkan tentang peningkatan prestasi, terutamanya berkaitan pengkompil JIT Cinder Facebook dan pelaksanaan PyPy yang sering diabaikan. Walaupun banyak perhatian tertumpu kepada pengintegrasian kompilasi JIT ke dalam penterjemah CPython utama, ramai pembangun mempersoalkan mengapa penyelesaian yang sudah berjaya tidak mendapat pengiktirafan yang sepatutnya.
PyPy Memberikan Peningkatan Prestasi Dunia Sebenar
PyPy , pelaksanaan Python yang ditulis dalam Python itu sendiri, telah secara senyap-senyap memberikan peningkatan prestasi yang mengagumkan selama lebih sedekad. Ahli komuniti melaporkan peningkatan kelajuan yang dramatik dalam persekitaran pengeluaran, dengan sesetengahnya melihat masa pemprosesan menurun daripada jam kepada minit hanya dengan menukar penterjemah. Pelaksanaan ini kini menyokong ciri-ciri Python 3.12 dan mengekalkan keserasian dengan kebanyakan pakej Python .
Penanda aras dunia sebenar menunjukkan PyPy secara konsisten memberikan peningkatan prestasi 4x merentasi pelbagai beban kerja. Aplikasi web menggunakan Flask melihat peningkatan yang serupa, dengan seorang pembangun melaporkan 8,127 transaksi sesaat berbanding 4,512 transaksi sesaat CPython dalam persekitaran ujian yang sama.
PyPy: Pelaksanaan Python yang menggunakan kompilasi Just-In-Time untuk mencapai peningkatan prestasi yang ketara berbanding penterjemah CPython standard
Perbandingan Prestasi
- PyPy : Purata peningkatan kelajuan 4x berbanding CPython
- Cinder JIT : Peningkatan kelajuan 4x pada sesetengah beban kerja (keputusan tidak konsisten)
- Penanda aras PyPy Flask : 8,127 transaksi/saat berbanding 4,512 transaksi/saat CPython
- Python berbanding bahasa terkompil: 5-50x lebih perlahan daripada C/C++, 5-20x lebih perlahan daripada Go/Rust
JIT CPython Menghadapi Cabaran Pelaksanaan
Projek Cinder Facebook mewakili pendekatan yang berbeza untuk pengoptimuman Python . Selepas 18 bulan pembangunan, pasukan tersebut mencapai peningkatan kelajuan 5x dalam fork penterjemah tersuai mereka. Walau bagaimanapun, apabila mereka cuba menggabungkan pengoptimuman ini kembali ke dalam pangkalan kod CPython utama, keuntungan prestasi hilang sepenuhnya.
Usaha JIT CPython semasa, yang diketuai oleh Mark Shannon , memfokuskan kepada pengkhususan jenis dan teknik pengoptimuman adaptif. Walaupun mencapai peningkatan kelajuan 4x pada sesetengah beban kerja, keputusan kekal tidak konsisten merentasi aplikasi yang berbeza. Sesetengah program melihat peningkatan yang minimum, dan JIT pada masa ini hanya menyokong seni bina AMD64 .
Pengkhususan jenis: Teknik pengoptimuman di mana arahan kod disesuaikan untuk jenis data tertentu untuk meningkatkan kelajuan pelaksanaan
Batasan CPython JIT
- Hanya menyokong seni bina AMD64
- Memerlukan latihan pengoptimuman berpandukan profil (PGO)
- Peningkatan prestasi yang tidak konsisten merentasi aplikasi
- Sasaran asal peningkatan kelajuan 5x dikurangkan kepada peningkatan ~50% dalam tempoh 4 tahun
- Cabaran integrasi semasa menggabungkan pengoptimuman kembali ke pangkalan kod utama
Komuniti Mempersoalkan Hala Tuju Python
Sebahagian besar komuniti Python menyatakan kekecewaan dengan tumpuan kepada peningkatan CPython manakala PyPy kekal kurang digunakan. Walaupun rekod prestasi PyPy yang terbukti dan pariti ciri semasa dengan Python 3.12 , penggunaan kekal terhad. Ramai pembangun masih salah percaya bahawa PyPy hanya menyokong subset Python atau berprestasi buruk dengan sambungan C .
PyPy adalah purata 4x lebih pantas namun 95% komuniti python mengabaikannya. Ia sudah mempunyai pariti ciri dengan 3.12 dan kebanyakan perpustakaan pypi berfungsi.
Kebimbangan keserasian yang pernah melanda PyPy sebahagian besarnya telah diselesaikan. Versi PyPy moden mengendalikan modul sambungan C , walaupun ia mungkin berjalan lebih perlahan daripada kod Python tulen kerana overhed meniru pengiraan rujukan.
Status Keserasian PyPy
- Menyokong ciri-ciri Python 3.12
- Serasi dengan kebanyakan perpustakaan PyPI
- Mengendalikan modul sambungan C (dengan sedikit overhed prestasi)
- Berfungsi dengan rangka kerja popular seperti Flask dan Django
- Satu-satunya had: Beberapa panggilan API peribadi CPython yang digunakan oleh perpustakaan tertentu
Masa Depan Prestasi Python
Pendekatan Python Software Foundation terhadap peningkatan prestasi terus berpusat kepada pengubahsuaian CPython dan bukannya menerima penyelesaian sedia ada seperti PyPy . Strategi ini mengelirukan ramai ahli komuniti, terutamanya memandangkan kejayaan PyPy yang terbukti dalam persekitaran pengeluaran.
Keputusan Microsoft baru-baru ini untuk menghentikan pasukan Faster CPython telah merumitkan lagi landskap tersebut. Pemergian pasukan tersebut mewakili kemunduran untuk usaha pengoptimuman CPython dan menyerlahkan cabaran melaksanakan kompilasi JIT dalam penterjemah Python utama.
Perdebatan ini mencerminkan persoalan yang lebih luas tentang masa depan Python : sama ada untuk meneruskan jalan yang sukar untuk mengoptimumkan CPython atau untuk menerima pelaksanaan alternatif yang sudah memberikan peningkatan prestasi yang diperlukan oleh pembangun. Memandangkan peranan Python dalam pembangunan perisian terus berkembang, keputusan ini menjadi semakin penting untuk daya saing jangka panjang bahasa tersebut.
Rujukan: Following up on the Python JIT