Nuitka Python-to-Cコンパイラは、パフォーマンスを大幅に向上させます

パフォーマンスの向上とより移植性の高いランタイムの両方のためにPythonをCに変換するコンパイラであるNuitkaは、0.6リリースに達しました。これは、将来のパフォーマンス向上の基礎を築くマイルストーンです。Nuitkaの開発者であるKayHayenが述べたように、「今後のリリースごとにパフォーマンスが向上する可能性があります。」

Nuitka 0.6はPythonのbool型(true/false)に最適化を適用するため、それらを使用するコードを可能な限り最も効率的なCコードに減らすことができます。bool最適化は、他の変数の型についても同様の最適化へのプレリュードとして来ます。

Nuitkaは、Cythonと同様に、PythonプログラムをCにコンパイルし、結果の実行可能ファイルをPythonランタイムにリンクして、互換性を最大限に高めます。Pythonバージョン2.6、2.7、および3.3から3.7はすべてサポートされており、のような構造も含まれasyncます。

NuitkaでコンパイルされたPythonプログラムは、パフォーマンスを大幅に向上させることができます。Hayenは、PystoneベンチマークのNuitkaコンパイルバージョンは、従来のCPython実装よりも約312パーセント高速に実行されると主張しています。

しかし、Hayenは、最も重要なパフォーマンスの改善がNuitkaでの型推論の到着を待っており、特定の型のPythonオブジェクトをネイティブCバージョンに完全に変換できるようになると警告しています。

Pythonのダイナミズムは、多くの種類の最適化を本質的に困難にします。多くのCython最適化では、最良の結果を得るために、多くのガイダンスと特殊な注釈構文が必要です。Nuitkaプロジェクトは、開発者がコードに注釈を付けることなく、同じ種類の最適化を提供することを目的としています。

もう1つの一般的に使用されるPythonアクセラレータであるPyPyは、Pythonコードをジャストインタイムでコンパイルしてアセンブリすることで機能します。ただし、PyPyはインプレース最適化に最適です。スタンドアロン方式でデプロイされたPythonアプリのコンパイルには適していません。Nuitkaはスタンドアロンの実行可能ファイルを生成します。その潜在的なユースケースの1つは、サードパーティの配布用にPythonアプリをパッケージ化することです。

Nuitka 0.6のその他の改善点には、WindowsでのClang、Microsoft Visual C ++、およびCygwinコンパイラのサポート、再コンパイルを高速化するためのオブジェクトファイルのキャッシュ(これもWindowsで)、および生成されたCコードの自動フォーマットが含まれます clang-format