首頁 科技週邊 人工智慧 這款編譯器能讓Python跟C++一樣快:最高提速百倍,MIT出品

這款編譯器能讓Python跟C++一樣快:最高提速百倍,MIT出品

Apr 07, 2023 pm 05:50 PM
python 編譯

自從深度學習興起以來,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 編譯器建構國際會議上。

這款編譯器能讓Python跟C++一樣快:最高提速百倍,MIT出品

  • 專案連結:https://github.com/exaloop/codon
  • 論文:https://dl.acm.org/doi/abs/10.1145/3578360.3580275

##在開發工作中,人們需要使用編譯器將原始碼轉換為可由電腦處理器執行的機器碼,Codon 能幫助開發者在Python 中創建新的領域特定語言(DSL),同時仍獲得其他語言的效能優勢。

「常規Python 會被編譯成所謂的字節碼,該字節碼在虛擬機器中執行,這就會讓速度慢上很多,」Codon 論文的主要作者Ariya Shajii 表示,「透過Codon,我們則進行本地編譯,因此你可以直接在CPU 上執行最終結果—— 不經過中間虛擬機器或解釋器。」

這款編譯器能讓Python跟C++一樣快:最高提速百倍,MIT出品

##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跟C++一樣快:最高提速百倍,MIT出品

上述圖表在幾個基準上比較了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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

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

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

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

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

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

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

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

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

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

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

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

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

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

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

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

See all articles