這款編譯器能讓Python跟C++一樣快:最高提速百倍,MIT出品
自從深度學習興起以來,Python 一直是最熱門的程式語言之一,它在數據科學和機器學習領域占主導地位,甚至是科學和數學計算領域的主角。如今你能想像的任何項目,幾乎都可以找到一個對應的 Python 套件。
然而,儘管高階語言的簡化語法使其易於學習和使用,但和 C 或 C 等低階語言相比,它的速度更慢。
麻省理工學院計算機科學與人工智慧實驗室(CSAIL)的研究人員希望透過Codon 來改變這一現狀,Codon 是一種基於Python 的編譯器,允許用戶編寫與C 或C 程式一樣高效運行的Python 程式碼,同時可以客製化和適應不同的需求和環境。
該研究的最新論文《Codon: A Compiler for High-Performance Pythonic Applications and DSLs》發表在了 2 月的第 32 屆 ACM SIGPLAN 編譯器建構國際會議上。
- 專案連結:https://github.com/exaloop/codon
- 論文:https://dl.acm.org/doi/abs/10.1145/3578360.3580275
##在開發工作中,人們需要使用編譯器將原始碼轉換為可由電腦處理器執行的機器碼,Codon 能幫助開發者在Python 中創建新的領域特定語言(DSL),同時仍獲得其他語言的效能優勢。
「常規Python 會被編譯成所謂的字節碼,該字節碼在虛擬機器中執行,這就會讓速度慢上很多,」Codon 論文的主要作者Ariya Shajii 表示,「透過Codon,我們則進行本地編譯,因此你可以直接在CPU 上執行最終結果—— 不經過中間虛擬機器或解釋器。」
##Codon 的編譯管道包括類型檢查,使其能夠更有效率地運行Python 程式碼。
基於 Python 的編譯器帶有適用於 Linux 和 macOS 的預先建置二進位文件,你也可以從原始碼建置或產生可執行檔。 「使用 Codon,你可以像 Python 一樣分發原始碼,或者你可以將它編譯成二進位文件,」Shajii 說。 「如果你想分發一個二進位文件,它將與像C 這樣的語言一樣,例如一個Linux 二進位檔案或一個Mac 二進位檔案。」
為了讓Codon 更快,研究人員決定在編譯時執行類型檢查。類型檢查涉及將資料類型(例如整數、字串、字元或浮點數等)指派給值。例如數字 5 可以分配為整數,字母 c 可以分配為字符,單詞 hello 可以分配為字串,十進制數 3.14 可以分配為浮點數。
「在常規 Python 中,所有類型都給了 runtime,」Shajii 介紹道。 「使用Codon,我們在編譯過程中進行類型檢查,這讓我們避免了在runtime 進行所有昂貴的類型操作。」
MIT CSAIL 首席研究員Saman Amarasinghe 補充說,「如果你有動態語言(例如Python),每次你有一些數據時,你都需要在它周圍保留很多額外的元數據,以確定runtime 的類型。Codon 取消了這種元數據,因此程式碼速度更快,資料更小。」
根據Shajii 的說法,Codon 在運行時沒有任何不必要的資料或類型檢查,所以開銷為零。在性能方面,「Codon 通常與C 不相上下。與Python 相比,我們通常看到的是10 到100 倍的速度改進。」
##另一方面,Codon的方法有其權衡。 「我們進行這種靜態類型檢查,並且不允許使用 Python 的一些動態特性,例如在 runtime 動態更改類型,」Shajii 表示。「還有一些Python 庫我們還沒有實現。」Amarasinghe 補充說,「Python 已經過無數人的實際測試,而Codon 還沒有達到那樣的水平,它需要運行更多的程序,獲得更多的回饋,並加固更多。達到常規Python 的穩定水平需要一些時間。」 Codon 最初設計用於基因組學和生物資訊學的工作。研究人員嘗試了大約 10 個用 Python 編寫的常用基因組學應用程序,並使用 Codon 對其進行了編譯,與最初的手動優化實現相比實現了 5 到 10 倍的加速。 「如今這些領域的資料集已變得非常大,而像Python 和R 這樣的高階語言速度太慢,無法處理每組定序TB 級的資料量,」 Shajii 說。 「這就是我們想要填補的空白—— 透過建立一種無需寫C 或C 程式碼即可處理大數據的方法,從而為非電腦科學或專業開發者的領域專家提供幫助。」 上述圖表在幾個基準上比較了Python(CPython 3)、PyPy、Codon 和C 的表現。 y 軸顯示 Codon 實作相對於 CPython 實現的加速。 MIT/EXALOOP/UNIVERSITY OF VICTORIA/ACM 除了基因組學,Codon 還可以應用於處理海量資料集的類似應用程序,以及基於Python 的編譯器支援的GPU 編程和並行編程等領域。事實上,Codon 現在正透過新創公司 Exaloop 在生物資訊、深度學習和量化金融領域進行商業應用,Shajii 創立了該公司,旨在將 Codon 從學術計畫轉變為產業應用。 為了讓 Codon 能夠適應不同領域,團隊開發了一個外掛系統。 「它就像一個可擴展的編譯器,」Shajii 說。 「你可以為基因組學或其他領域編寫插件,這些插件可以有新的函式庫和新的編譯器最佳化。」 此外,公司和機構可以使用Codon 來製作原型和開發自己的應用程式。 「我們看到的一種模式是:人們使用Python 進行原型設計和測試,因為它易於使用,但到了某些重要事項上,他們就不得不重寫應用程序,或讓其他人用C 或C 在在更大的數據集上進行重寫與測試,”Shajii 表示。 「透過Codon,你就可以完全使用Python,並獲得兩全其美的好處。」 關於Codon 的未來,Shajii 和他的團隊目前正在研究廣泛使用的Python 庫的本地實現,以及特定於庫的優化,以幫助人們從這些庫中獲得更好的性能。他們還計劃創建一個廣受歡迎的功能:Codon 的 WebAssembly 後端,以支援在 Web 瀏覽器上運行程式碼。
以上是這款編譯器能讓Python跟C++一樣快:最高提速百倍,MIT出品的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。
