Pyston-lite、ストック Python 用の JIT コンパイラーが導入されました

最新の JIT コンパイル テクノロジを使用して Python 言語の高性能実装を提供する Pyston プロジェクトの開発者は、CPython 用の JIT コンパイラの実装を備えた Pyston-lite 拡張機能を提供しました。 Pyston は CPython コードベースのブランチであり、個別に開発されていますが、Pyston-lite は標準の Python インタープリター (CPython) に接続するように設計されたユニバーサル拡張機能として設計されています。

Pyston-lite を使用すると、PIP または Conda パッケージ マネージャーを使用して追加の拡張機能をインストールすることで、インタープリターを変更せずに基本的な Pyston テクノロジーを使用できます。 Pyston-lite はすでに PyPI および Conda リポジトリでホストされており、インストールするには、コマンド「pip install pyston_lite_autoload」または「conda install pyston_lite_autoload -c pyston」を実行するだけです。 pyston_lite (直接 JIT) と pyston_lite_autoload (Python プロセスの開始時に自動 JIT 置換を実行) の XNUMX つのパッケージが提供されています。 pyston_lite.enable() 関数を使用すると、自動ロード モジュールをインストールせずに、アプリケーションからの JIT の組み込みをプログラムで制御することもできます。

Pyston-lite は Pyston で利用可能なすべての最適化をカバーしているわけではありませんが、これを使用すると、通常の Python 10 と比較してパフォーマンスを約 25 ~ 3.8% 向上させることができます。 将来的には、Pyston に存在する最適化のほとんどが Pyston-lite に移行され、サポートされる CPython のバージョンが拡張される予定です (最初のリリースは Python 3.8 のみをサポートします)。 よりグローバルな計画には、JIT 用の新しい API を実装するための CPython チームとの協力が含まれており、Python の動作をより完全に制御できるようになります。 提案されている変更を Python 3.12 ブランチに含めることが議論されています。 理想的には、すべての機能を Pyston から拡張機能に移行する可能性が検討されています。これにより、独自の CPython フォークを維持する必要がなくなります。

Pyston-lite に加えて、このプロジェクトは、新しい最適化を提供する本格的な Pyston 2.3.4 パッケージのアップデートもリリースしました。 pyperformance テストでは、バージョン 2.3.4 はリリース 2.3.3 よりも約 6% 高速です。 CPython と比較した全体的なパフォーマンスの向上は 66% と推定されます。

さらに、メイン プロジェクトの CPython 3.11 開発サイクル内で開発された最適化に注目することができます。これにより、一部のテストでパフォーマンスが 25% 向上することが可能になりました。 たとえば、CPython 3.11 では、基本モジュールのバイトコード状態のキャッシュ効率が向上し、スクリプトの起動が 10 ~ 15% 高速化されます。 関数呼び出しが大幅に高速化され、標準操作の特殊な高速インタプリタが追加されました。 Cinder プロジェクトと HotPy プロジェクトによって準備されたいくつかの最適化を移植する作業も進行中です。

さらに、nogil プロジェクト内では、グローバル インタープリター ロック (GIL、グローバル インタープリター ロック) なしで CPython を構築するための実験モードの作業が進行中です。これにより、異なるスレッドから共有オブジェクトへの並列アクセスが許可されなくなり、複数のスレッドでの操作の並列化が妨げられます。 -コアシステム。 GIL 問題の別の解決策として、プロセス内で実行されている各インタープリターに個別の GIL をバインドする機能が開発されています (XNUMX つのプロセス内で複数のインタープリターを実行できますが、それらの並列実行の効率は GIL に依存します)。

出所: オープンネット.ru

コメントを追加します