Mengikut pelan keluaran, Python 3.11.0 akan dikeluarkan pada 24 Oktober 2022.
Menurut ujian, 3.11 akan mempunyai peningkatan prestasi 10-60% berbanding 3.10 Pencapaian ini terutamanya dikaitkan dengan projek "Faster CPython", yang juga dikenali sebagai "Shannon Project".
Versi 3.11 ialah permulaan yang menarik untuk mempercepatkan Python. Lebih banyak aksi akan datang pada 3.12 seterusnya.
Artikel berikut diterjemahkan daripada "Python 3.12 Goals" oleh "Shannon Project", mari kita lihat dahulu!
Kandungan artikel ini boleh diubah, versi sebenar akan diutamakan!
Artikel ini ialah ringkasan kandungan utama yang Faster CPython merancang untuk melaksanakan dalam 3.12.
Cara utama untuk meningkatkan kelajuan dalam Python 3.11 ialah menggantikan opcode individu dengan opcode sensitif konteks yang lebih pantas (opcodes pengkhususan adaptif), seterusnya Penambahbaikan besar adalah untuk mengoptimumkan larian daripada berbilang opcode.
Untuk melakukan ini, banyak opcode peringkat tinggi sedia ada akan digantikan dengan opcode peringkat rendah, seperti yang digunakan untuk menyemak nombor versi dan kiraan rujukan. Opcode yang lebih ringkas ini lebih mudah untuk dioptimumkan, contohnya, operasi pengiraan rujukan berlebihan boleh dialih keluar.
Opcode peringkat rendah ini juga memberi kami satu set arahan yang sesuai untuk menjana kod mesin (dalam kedua-dua projek CPython dan JIT pihak ketiga).
Untuk melakukan ini, gelung penterjemah akan dijana berdasarkan perihalan perisytiharan.
Ini boleh mengurangkan beberapa pepijat yang disebabkan oleh mengekalkan gelung penterjemah disegerakkan dengan fungsi berkaitan tertentu (mark_stacks, stack_effect, dsb.), dan juga membolehkan kami mencuba perubahan yang lebih besar pada gelung penterjemah.
Python pada masa ini mempunyai kunci penterjemah global (GIL) bagi setiap proses, yang menghalang keselarian berbilang benang.
PEP-684 mencadangkan penyelesaian untuk memastikan semua keadaan global selamat untuk benang dan dipindahkan ke kunci penterjemah global bagi setiap penggunaan sub-jurubahasa.
PEP-554 mencadangkan penyelesaian untuk Python untuk mencipta sub-jurubahasa (pada masa ini hanya ciri C API), dengan itu mencapai benar Keselarian berbilang benang.
Kami menganalisis kod bait mana yang paling mendapat manfaat daripada pengkhususan, dan merancang untuk 3.12 Melengkapkan baki penambahbaikan hasil tinggi.
https://www.php.cn/link/7392ea4ca76ad2fb4c9c3b6a5c6e31e3
struktur objek yang lebih kecilTerdapat beberapa pertukaran di sini antara keserasian dan prestasi ke belakang, dan PEP mungkin perlu dicadangkan untuk membina konsensus.
Ini bukan sahaja mengoptimumkan peruntukan memori dan deallocation, tetapi juga mempercepatkan traversal objek semasa GC dan pengagihan semula.
Kestabilan API
Atas ialah kandungan terperinci Matlamat Python 3.12: prestasi yang lebih cekap!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!