ご存知のとおり、Python は習得が簡単で強力な機能を備えたプログラミング言語であり、さまざまなユーザー使用統計リストで常に上位にランクされています。したがって、研究者は、この言語をより適切に提供するために、Python を中心としたさまざまな便利なツールを開発しました。
コンパイラは、高級言語とマシンの間の翻訳者として機能します。さまざまなバージョンの Python コンパイラが開発されています。以下では、新しい高パフォーマンス Python を紹介します。コンパイラー: コドン。このプロジェクトはオンラインになってからわずか数日で、すでに 22,000 個のスターを獲得しています。
プロジェクトアドレス: https://github.com/exaloop/codon
高性能 Python コンパイラーとして、Codon は実行時のオーバーヘッドなしで Python コードをネイティブ マシン コードにコンパイルします。 Python の一般的な高速化は、単一スレッドで約 10 ~ 100 倍以上です。コドンの性能は一般的に C/C と同等です。 Python とは異なり、Codon はネイティブ マルチスレッドをサポートしているため、何倍も高速化できます。 Codon はプラグイン インフラストラクチャを通じて拡張可能であり、ユーザーは新しいライブラリ、コンパイラの最適化、さらにはキーワードを組み込むことができます。
Codon フレームワークは完全にモジュール式で拡張可能で、新しいモジュール、コンパイラの最適化、ドメイン固有言語などのシームレスな統合が可能で、バイオインフォマティクスや定量などの多くのアプリケーションに積極的にサービスを提供しています。金融. さまざまな分野で新しいコドン拡張を開発します。
Codon Pipeline
リリース以来非常に人気のあるこのコンパイラの効果は何ですか?いくつかのベンチマーク結果を見てみましょう。
ベンチマーク以下は、さまざまなタスクおよびアプリケーションにおける Python、PyPy、C、および Codon のパフォーマンスを比較した、Codon ベンチマーク スイートの結果です。
# ベンチマークは次の設定で実行されました:
#Python、PyPy、およびコドンの比較
Python、PyPy、C、コドンの比較
幾種語言的具體對比如下:
Codon 盡可能地遵循CPython 語法、語意學和API,但在一些特殊情況下,考慮效能原因,Codon 與CPython 會有些不同,例如Codon 為64 位元int,CPython 是任意寬度int。在性能方面,CPython 的加速通常是 10-100 倍的加速。
雖然Codon 確實提供了一個類似於Numba 的JIT 裝飾器,但Codon 通常是提前(ahead-of-time)編譯器,可以將端對端程式編譯為本機代碼。它也支援編譯更廣泛的 Python 構造和函式庫集。
PyPy 的目標是成為CPython 的簡易替代品,而Codon 在某些地方有所不同,這些不同主要體現在消除動態運行時或虛擬機器上,從而獲得更好的性能。
Codon 通常會產生與等效的 C 或 C 程式相同的程式碼,有時可以產生比 C/C 編譯器更好的程式碼。原因有很多,例如更好的容器實現,Codon 不使用目標檔案和內聯所有函式庫程式碼,或不使用 C 執行的特定於 Codon 的編譯器最佳化或 C 。
Codon 的編譯過程其實更接近 C 而不是 Julia。 Julia 是一種動態類型語言,它執行類型推斷作為最佳化,而 Codon 類型是提前檢查整個程式。 Codon 也試圖透過採用 Python 的語法和語意來規避新語言的學習曲線。
雖然Codon 幾乎支援Python 的所有語法,但它並不是一個簡單的替代品,大型程式碼庫可能需要修改才能透過Codon 編譯器運行。例如,一些 Python 的模組還沒有在 Codon 中實現,一些 Python 的動態特性是不允許的。 Codon 編譯器會產生詳細的錯誤訊息,以協助識別和解決任何不相容問題。 Codon 支援無縫的 Python 互通性,以處理需要特定 Python 程式庫或動態性的情況。
我想使用 Codon,但我有一個大型 Python 程式碼庫且不想移植,怎麼辦?
你可以透過 @codon.jit 裝飾器來使用 Codon,這將只編譯帶註解的函數,並自動處理與 Codon 之間的資料轉換。它還允許使用任何特定於 Codon 的模組或擴展,例如多線程。
與其他語言和框架的互通性如何?
互通性是 Codon 的優先事項。我們不希望使用 Codon 使用戶無法使用現有的其他優秀框架和函式庫。 Codon 支援與 Python 和 C/C 的完全互通。
Codon 是否使用垃圾收集?
是的,Codon 使用了 Boehm 垃圾收集器。
Codon 不支援 Python 模組 X 或函數 Y?
雖然 Codon 涵蓋了 Python 標準函式庫的一個相當大的子集,但它還沒有涵蓋每個模組的每個函數。請注意,仍然可以透過 Python 呼叫缺少的函數 from python import。許多缺少 Codon 本地實現的函數(例如 I/O 或 OS 相關功能)通常不會實現 Codon 的實質加速。
對於我的應用程序,Codon 並不比 Python 快?
#大部分時間用在 C 語言實作的函式庫程式碼中的應用程式通常不會在 Codon 中看到實質的效能提升。同樣地,受 I/O 或網路限制的應用程式在 Codon 中也會遇到相同的瓶頸。
對於我的應用程序,Codon 比 Python 慢?
如果是這樣,請將 Codon 明顯比 Python 慢的情況報告給問題追蹤器。
Codon 是免費的嗎?
對於非生產用途,Codon 始終是免費的。使用者可以免費將 Codon 用於個人、學術或其他非商業應用。
Codon 是開源的嗎?
Codon 是根據商業原始碼許可證 (BSL) 獲得許可的,它的原始程式碼是公開可用的,並且可以免費用於非生產用途。 BSL 在技術上不是「開源」許可證,儘管在許多情況下你仍然可以像對待任何其他開源專案一樣對待 Codon。重要的是,根據 BSL,每個版本的 Codon 都會在 3 年後轉換到實際的開源授權(特別是 Apache)。
以上が星2,000個獲得で速度100倍、高性能PythonコンパイラーCodonがオープンソース化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。