Rumah > Artikel > Peranti teknologi > Pengkompil ini boleh membuat Python sepantas C++: sehingga 100 kali lebih pantas, dihasilkan oleh MIT
Sejak kebangkitan pembelajaran mendalam, Python telah menjadi salah satu bahasa pengaturcaraan yang paling popular ia menguasai bidang sains data dan pembelajaran mesin, malah memainkan peranan utama dalam saintifik dan pengkomputeran matematik. Pada masa kini, anda boleh mencari pakej Python yang sepadan untuk hampir semua projek yang anda boleh bayangkan.
Walau bagaimanapun, walaupun sintaks yang dipermudahkan bagi bahasa peringkat tinggi menjadikannya mudah dipelajari dan digunakan, ia lebih perlahan berbanding dengan bahasa peringkat rendah seperti C atau C++.
Penyelidik di Makmal Sains Komputer dan Kecerdasan Buatan (CSAIL) MIT berharap untuk mengubahnya dengan Codon, penyusun berasaskan Python yang membolehkan pengguna Menulis kod Python yang berfungsi dengan cekap seperti C atau program C++, tetapi boleh disesuaikan dan disesuaikan dengan keperluan dan persekitaran yang berbeza.
Kertas terkini penyelidikan ini, "Codon: A Compiler for High-Performance Pythonic Applications and DSLs", telah diterbitkan pada Persidangan Antarabangsa ACM SIGPLAN ke-32 mengenai Pembinaan Pengkompil pada bulan Februari.
Dalam kerja-kerja pembangunan , orang perlu menggunakan pengkompil untuk menukar kod sumber kepada kod mesin yang boleh dilaksanakan oleh pemproses komputer Codon boleh membantu pembangun mencipta bahasa khusus domain (DSL) baharu dalam Python sambil masih mendapat faedah prestasi bahasa lain.
"Regular Python disusun menjadi apa yang dipanggil bytecode, yang dilaksanakan dalam mesin maya, yang menjadikannya lebih perlahan," kata Codon, pengarang utama kertas Ariya Shajii. , "Dengan Codon, kami menyusun secara asli, supaya anda boleh menjalankan hasil akhir terus pada CPU - tanpa melalui mesin maya atau penterjemah perantaraan."
Saluran kompilasi Codon termasuk pemeriksaan jenis, membolehkannya menjalankan kod Python dengan lebih cekap.
Pengkompil berasaskan Python disertakan dengan binari pra-bina untuk Linux dan macOS, dan anda juga boleh membina atau menjana boleh laku daripada sumber. "Dengan Codon, anda boleh mengedarkan kod sumber seperti Python, atau anda boleh menyusunnya menjadi binari," kata Shajii. "Jika anda ingin mengedarkan binari, ia akan sama dengan bahasa seperti C++, seperti binari Linux atau binari Mac
Untuk menjadikan Codon lebih pantas, selidiki Orang." memutuskan untuk melakukan pemeriksaan jenis pada masa penyusunan. Pemeriksaan jenis melibatkan penugasan jenis data (seperti integer, rentetan, aksara atau apungan, dll.) kepada nilai. Sebagai contoh, nombor 5 boleh ditetapkan sebagai integer, huruf c boleh ditetapkan sebagai aksara, perkataan hello boleh ditetapkan sebagai rentetan, dan nombor perpuluhan 3.14 boleh ditetapkan sebagai nombor titik terapung.
"Dalam Python biasa, semua jenis diberikan kepada runtime," kata Shajii. "Menggunakan Codon, kami melakukan semakan taip semasa penyusunan, yang membolehkan kami mengelakkan semua operasi jenis mahal pada masa jalankan, Saman Amarasinghe, penyelidik utama di MIT CSAIL, menambah, " Jika anda mempunyai bahasa dinamik (seperti Python), setiap kali anda mempunyai beberapa data, anda perlu menyimpan banyak metadata tambahan di sekelilingnya untuk menentukan jenis pada masa jalanan menghapuskan metadata ini, jadi kod itu lebih pantas dan lebih kecil >Menurut Shajii, Codon tidak mempunyai sebarang data yang tidak diperlukan atau pemeriksaan jenis pada masa jalan, jadi tiada overhed sifar. Dari segi prestasi, "Codon secara amnya setanding dengan C++. Kami biasanya melihat peningkatan kelajuan 10x hingga 100x berbanding Python."
Codon, sebaliknya Pendekatan ini mempunyai dagangannya. -off. "Kami melakukan semakan jenis statik ini dan tidak membenarkan penggunaan beberapa ciri dinamik Python, seperti menukar jenis secara dinamik pada masa jalan," kata Shajii.
“Masih terdapat beberapa perpustakaan Python yang kami belum laksanakan lagi.” Amarasinghe menambah, “Python sebenarnya telah diuji oleh ramai orang, dan Codon masih belum mencapai tahap itu untuk mendapatkan Lebih banyak maklum balas, dan lebih pengerasan Ia akan mengambil sedikit masa untuk mencapai tahap stabil Python biasa 》
Kodon pada asalnya direka untuk kerja genomik dan bioinformatik. Para penyelidik mencuba kira-kira 10 aplikasi genomik biasa yang ditulis dalam Python dan menyusunnya menggunakan Codon, mencapai kelajuan 5 hingga 10 kali berbanding pelaksanaan asal yang dioptimumkan secara manual.
“Set data dalam medan ini telah menjadi sangat besar hari ini, dan bahasa peringkat tinggi seperti Python dan R terlalu lambat untuk mengendalikan terabait data bagi setiap set penjujukan,” Shajii berkata. "Itulah jurang yang ingin kami isi - dengan membina cara untuk memproses data besar tanpa perlu menulis kod C atau C++, dengan itu memperkasakan pakar domain yang bukan pembangun sains komputer atau profesional." 🎜>
Carta di atas membandingkan prestasi Python (CPython 3), PyPy, Codon dan C++ pada beberapa penanda aras. Paksi-y menunjukkan kelajuan pelaksanaan Kodon berbanding dengan pelaksanaan CPython. MIT/EXALOOP/UNIVERSITY OF VICTORIA/ACMSelain genomik, Codon juga boleh digunakan pada aplikasi serupa yang mengendalikan set data besar-besaran, serta Python pengaturcaraan GPU kompilasi berasaskan dan pengaturcaraan selari yang disokong oleh pemproses. Malah, Codon kini digunakan secara komersial dalam bioinformatik, pembelajaran mendalam dan kewangan kuantitatif melalui Exaloop permulaan, yang Shajii diasaskan untuk mengubah Codon daripada projek akademik kepada aplikasi industri.
Untuk membolehkan Codon menyesuaikan diri dengan medan yang berbeza, pasukan membangunkan sistem pemalam. "Ia seperti penyusun yang boleh diperluaskan," kata Shajii. "Anda boleh menulis pemalam untuk genomik atau medan lain, dan pemalam ini boleh mempunyai perpustakaan baharu dan pengoptimuman pengkompil baharu."
Selain itu, syarikat dan institusi boleh menggunakan Codon untuk prototaip dan membangunkan aplikasi anda sendiri. "Salah satu corak yang kami lihat ialah orang menggunakan Python untuk membuat prototaip dan ujian kerana ia mudah digunakan, tetapi apabila ia berkaitan dengan sesuatu yang penting, mereka perlu menulis semula aplikasi atau meminta orang lain melakukannya dalam C atau C++ dan menguji pada set data yang lebih besar," kata Shajii. "Dengan Codon, anda boleh menggunakan Python sepenuhnya dan mendapatkan yang terbaik dari kedua-dua dunia." Pelaksanaan pustaka Python, serta pengoptimuman khusus perpustakaan untuk membantu orang ramai mendapat prestasi yang lebih baik daripada perpustakaan ini. Mereka juga merancang untuk mencipta ciri popular: Bahagian belakang WebAssembly Codon untuk menyokong kod berjalan pada pelayar web.
Atas ialah kandungan terperinci Pengkompil ini boleh membuat Python sepantas C++: sehingga 100 kali lebih pantas, dihasilkan oleh MIT. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!