Seperti yang kita sedia maklum, Python ialah bahasa pengaturcaraan yang mudah dipelajari dan mempunyai fungsi yang berkuasa Ia sentiasa berada di kedudukan teratas dalam pelbagai senarai statistik penggunaan pengguna. Sehubungan itu, penyelidik telah membangunkan pelbagai alat mudah di sekitar Python untuk menyampaikan bahasa ini dengan lebih baik.
Pengkompil bertindak sebagai penterjemah antara bahasa peringkat tinggi dan mesin Versi yang berbeza untuk penyusun Python Di bawah ini kami akan memperkenalkan Python berprestasi tinggi baharu kepada anda. Penyusun: Kodon. Projek ini telah berada dalam talian selama beberapa hari dan telah menerima 2.2k bintang.
Alamat projek: https://github.com/exaloop/codon
Sebagai pengkompil Python berprestasi tinggi, Codon menyusun kod Python ke dalam kod mesin asli tanpa sebarang overhed masa jalan. Kelajuan biasa untuk Python adalah sekitar 10-100x atau lebih pada satu utas. Prestasi Codon secara amnya setanding dengan C/C++. Tidak seperti Python, Codon menyokong multithreading asli, yang boleh meningkatkan kelajuan dengan banyak kali. Codon boleh dikembangkan melalui infrastruktur pemalam, yang membolehkan pengguna menggabungkan perpustakaan baharu, pengoptimuman pengkompil dan juga kata kunci.
Rangka kerja Codon adalah modular dan boleh diperluas sepenuhnya, membenarkan penyepaduan lancar bagi modul baharu, pengoptimuman pengkompil, bahasa khusus domain, dsb., dan secara aktif menyediakan banyak aplikasi seperti bioinformatik dan kuantitatif kewangan. Membangunkan sambungan Kodon baharu dalam pelbagai bidang.
Codon Pipeline
Apakah kesan pengkompil yang begitu popular sejak dikeluarkan ? Mari kita lihat beberapa hasil penanda aras.
Berikut adalah hasil daripada suite penanda aras Codon, membandingkan prestasi Python, PyPy, C++ dan Codon pada pelbagai tugas dan aplikasi.
Tanda aras dijalankan pada tetapan berikut:
Perbandingan Python, PyPy dan Kodon
Perbandingan Python, PyPy, C++ dan Codon
Perbandingan khusus beberapa bahasa adalah seperti berikut:
Kodon mengikut sintaks CPython, semantik dan API sebanyak mungkin, tetapi dalam beberapa kes khas, mengambil kira sebab prestasi, Codon akan agak berbeza daripada CPython int 64-bit, dan CPython ialah widthint sewenang-wenangnya. Dari segi prestasi, kelajuan CPython biasanya 10-100x kelajuan.
Walaupun Codon menyediakan penghias JIT yang serupa dengan Numba, Codon secara amnya ialah penyusun lebih awal yang boleh menyusun atur cara hujung ke hujung ke dalam kod Asli. Ia juga menyokong menyusun set binaan dan perpustakaan Python yang lebih luas.
PyPy menyasarkan untuk menjadi pengganti mudah untuk CPython, manakala Codon berbeza di sesetengah tempat, terutamanya dalam penyingkiran masa jalanan dinamik atau mesin maya, menghasilkan prestasi yang lebih baik.
Kodon biasanya menghasilkan kod yang sama seperti program C atau C++ yang setara, dan kadangkala boleh menjana kod yang lebih baik daripada pengkompil C/C++. Terdapat banyak sebab, seperti pelaksanaan kontena yang lebih baik, Codon tidak menggunakan fail objek dan menyelaraskan semua kod perpustakaan, atau tidak menggunakan pengoptimuman pengkompil khusus Codon yang dilakukan dalam C atau C++.
Proses kompilasi Codon sebenarnya lebih dekat dengan C++ berbanding Julia. Julia ialah bahasa ditaip secara dinamik yang melakukan inferens jenis sebagai pengoptimuman, manakala jenis Codon disemak lebih awal sepanjang program. Codon juga cuba untuk memintas keluk pembelajaran bahasa baharu dengan menggunakan sintaks dan semantik Python.
Walaupun Codon menyokong hampir semua sintaks Python, ia bukanlah pengganti yang mudah, dan pangkalan kod yang besar mungkin memerlukan pengubahsuaian untuk menyusun dengan Codon Pelayan sedang berjalan . Sebagai contoh, beberapa modul Python belum dilaksanakan dalam Codon, dan beberapa ciri dinamik Python tidak dibenarkan. Pengkompil Codon menjana mesej ralat terperinci untuk membantu mengenal pasti dan menyelesaikan sebarang isu ketidakserasian. Codon menyokong kebolehoperasian Python yang lancar untuk mengendalikan situasi yang memerlukan perpustakaan atau dinamik Python tertentu.
Saya mahu menggunakan Codon, tetapi saya mempunyai pangkalan kod Python yang besar dan tidak mahu mengalihkannya, apakah yang perlu saya lakukan?
Anda boleh menggunakan Codon melalui penghias @codon.jit, yang akan menyusun hanya fungsi beranotasi dan mengendalikan penukaran data ke dan dari Codon secara automatik. Ia juga membenarkan penggunaan mana-mana modul atau sambungan khusus Codon, seperti multithreading. Sejauh manakah
dengan bahasa dan rangka kerja lain?
Saling kendali adalah keutamaan di Codon. Kami tidak mahu menggunakan Codon untuk menghalang pengguna daripada menggunakan rangka kerja dan perpustakaan hebat lain yang wujud. Codon menyokong saling kendali penuh dengan Python dan C/C++.
Adakah Codon menggunakan kutipan sampah?
Ya, Codon menggunakan pemungut sampah Boehm.
Codon tidak menyokong modul Python X atau fungsi Y?
Walaupun Codon merangkumi subset yang besar bagi perpustakaan standard Python, ia belum lagi meliputi setiap fungsi dalam setiap modul. Ambil perhatian bahawa fungsi yang hilang masih boleh dipanggil dari import Python. Banyak fungsi yang kekurangan pelaksanaan asli Codon (seperti I/O atau fungsi berkaitan OS) lazimnya tidak mencapai percepatan yang ketara daripada Codon.
Codon tidak lebih pantas daripada Python untuk aplikasi saya?
Aplikasi yang menghabiskan sebahagian besar masanya dalam kod perpustakaan yang dilaksanakan dalam C biasanya tidak akan melihat peningkatan prestasi yang ketara dalam Codon. Begitu juga, aplikasi yang terikat dengan I/O atau rangkaian akan mengalami kesesakan yang sama dalam Codon.
Adakah Codon lebih perlahan daripada Python untuk aplikasi saya?
Jika ini berlaku, sila laporkan Codon menjadi jauh lebih perlahan daripada Python kepada penjejak isu.
Adakah Codon percuma?
Kodon sentiasa percuma untuk kegunaan bukan pengeluaran. Pengguna bebas menggunakan Codon untuk aplikasi peribadi, akademik atau lain-lain bukan komersial.
Adakah Codon sumber terbuka?
Kodon dilesenkan di bawah Lesen Sumber Perniagaan (BSL) dan kod sumbernya tersedia secara umum dan percuma untuk kegunaan bukan pengeluaran. BSL secara teknikal bukanlah lesen "sumber terbuka", walaupun dalam banyak kes anda masih boleh merawat Codon seperti mana-mana projek sumber terbuka yang lain. Yang penting, menurut BSL, setiap versi Codon dialihkan kepada lesen sumber terbuka sebenar (khususnya Apache) selepas 3 tahun.
Atas ialah kandungan terperinci Memperolehi 2,000 bintang, kelajuan meningkat seratus kali ganda, dan pengkompil Python berprestasi tinggi Codon ialah sumber terbuka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!