ホームページ >バックエンド開発 >Python チュートリアル >Python 3.11 のパフォーマンスは 64% 近く向上しました。
Python が高速なプログラミング言語ではないことは周知の事実です。多くの開発者は、この言語のパフォーマンスの向上を期待しています。この状況は、もうすぐ変わるか、少なくとも正しい方向に向かうかもしれません。これは、Python の創設者が復帰した後の意思決定の結果の 1 つでもあります。仕事。
5 月 7 日、Python チームは Python の最新バージョンである Python 3.11 をリリースしました。現在リリースされているのは、開発者がテストや実験に使用できるベータ版 (Beta1) です。
#開発チームが定めた規定によると、正式版は 2022 年 10 月にリリースされる予定です。
ある好奇心旺盛なネットユーザーは、自分の仮想マシンでこれをテストし、Python 3.10 と 3.11 を別々の Docker コンテナにインストールし、一連のベンチマーク テストでそれらの比較を調べました。
この作業を完了するには、pyperformance パッケージが使用されます。このパッケージは、開発者が負荷の高いベンチマーク テスト作業を完了するのに役立ちます。
要約データ (平均値に基づく) では、Python 3.11 は Python 3.10 より 14% 高速です。新しい 3.11 バージョンは、一部のベンチマークではわずかに遅くなりますが、ほとんどのベンチマークでは 64% 高速です。
以下は、10 コア CPU を搭載した M1 Pro MacBook Pro 16 で実行されたベンチマーク テストです。 Python の各バージョンは Docker にインストールされ、5 つの論理 CPU コアを使用します。
以下はさまざまなパッケージの実行データです:
現在、Python 3.11 の正式バージョンは正式にリリースされていません。安定版は現在候補版のみのテストを行っており、正式版リリース後は両者の差がさらに広がる可能性があります。
Luo Qiqi 著、OSC オープンソース コミュニティ制作 (ID: oschina2013)
退職後、Microsoft の Faster CPython チームに参加するために復帰した後, Python の父である Guido van Rossum 氏は、2021 Python Language Summit で、チームは Python バージョン 3.11 で少なくとも 1 倍の高速化を達成すると厳しい言葉を発しました。
#今年の Python Language Summit で、Guido とチーム パートナーの Mark Shannon が最新の進捗状況を報告しました。バージョン 3.10 と比較して、CPython 3.11 の速度は 10 -コードサイズや作業領域などの条件により異なりますが、60%の間です。 pyperformance ベンチマーク スイートを使用して測定したところ、Ubuntu Linux 上で GCC を使用してコンパイルした場合、CPython 3.11 は CPython 3.10 より平均 25% 高速です。
CPython 3.11 のパフォーマンスの向上は、主に起動の高速化と実行時間の高速化に焦点を当てています。これらの最適化のほとんどは、PEP 659: Adaptive Interpreter から来ており、その動作原理は次のとおりです。 JIT にやや似ており、どちらもホット コードを識別しますが、適応型インタプリタの作業範囲をバイトコードから分離することはできません。 PEP 659 提案に関する作業は現在ほぼ完了していますが、for ループとバイナリ演算の動的最適化はまだ完了する必要があります。
Python 3.11 は 25% 高速化しましたが、まだ改善の余地がいくつかあります。たとえば、3.11 の Python のメモリ消費量は基本的に 3.10 のメモリ消費量と同じです。
さらに、C 拡張機能の問題にも注意する必要があります。CPython の C とのシンプルなインターフェイスが主な利点ですが、C 拡張機能との非互換性が大きな欠点です。 CPython 3.11 で Faster CPython チームが行った最適化作業では、拡張モジュールの問題がほとんど無視されており、チーム リーダーのシャノン氏は、チームは Python コードを削減するために低レベル関数 API を仮想マシンに公開する可能性を検討していると述べました。可能な限り C コードを使用します。
非常に期待されている JIT コンパイラについて、シャノン氏は、JIT を実装するための最初のステップはトレース インタプリタを実装することであるが、現在は注意が必要なプロジェクトが多すぎて、コンパイラの導入作業が必要であると述べました。 JIT コンパイラ まだまだ「早くても 3.13 まで届かないかもしれない」とのこと。 (ところで、Shannon は、CPython が本当に JIT を導入する必要があるかどうかについて、常に懐疑的でした。)
興味深いことに、昨日、開発者 Sam Gross の新しい提案について報告しました: CPython 解釈 GIL - Global Interpreter Lock を完全に削除する。この提案と Faster CPython チームの作業は、まったく異なる方法でマルチスレッド Python コードを高速化しますが、この 2 つはいくつかの矛盾を引き起こす可能性があります。結局のところ、Faster CPython が実装した最適化の大部分は次の前提に基づいています。 GIL がまだ存在するということです。
注: 昨年のコア開発者スプリント ミーティングで、コア開発者は Sam Gross と nogil プロジェクトについて徹底的なディスカッションを行い、誰もがより懸念していた多くの質問に答えました。具体的な議事録については、こちらの記事をご覧ください - Python 公式セミナー: GIL を完全に削除することは本当に可能ですか?
以上がPython 3.11 のパフォーマンスは 64% 近く向上しました。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。