HeadlinesBriefing HeadlinesBriefing.com

Python 3.15 パフォーマンスベンチマーク結果

Hacker News •
×

10月となりましたが、新しい Python のリリースを試す時間です(技術的には、3.15.0rc3 を使用していますが、正式な 3.15 リリースは数日後に公開されます)。去年の Python 3.14 パフォーマンス記事同様、本日は Python 3.15 と 3.10 まで遡る過去のインタプリタとの非公式ベンチマークの新しい実行を共有します。チャートやテーブルに興味がない場合は、記事末尾の結論セクションにジャンプしてください。私が呼んでいるベンチマークが "non-formal" ということはどういう意味ですか? プログラミング言語の客観的かつ普遍的なパフォーマンス測定は不可能です。できることはプログラムを書いて実行し、そのパフォーマンスを測定することだけです。他のプログラムは似たようなパフォーマンス特性を示すかもしれませんが、そうでないかもしれません、本当にわからないでしょう。このベンチマークの意図は、Python のバージョン間のパフォーマンス変化を感じ取ることだけですが、Python インタプリタの包括的なパフォーマンスプロファイルを得ようとしているのではありません。私のベンチマークでは、fibo.py および bubble.py という名前の 2 つのプログラムを実行します。興味があれば確認できます。これらは過去のこのベンチマークで使用した同じプログラムです。1 つ目はフィボナッチ数列の数字を計算し、2 つ目はバブルソート アルゴリズムを使用して数字をソートします。これら 2 つのプログラムをアルゴリズムの 2 つのクラスの代表的なものとして選択しました。フィボナッチ計算は再帰を使用して行われており、Python インタプリタでは somewhat 非効率であると見つかりました。一方、バブルソートは for-loop を使用し、再帰は含まれていません。私のベンチマークはカバーしようとしていない他の種類のプログラムがあります。特に、I/O bound コードはこのベンチマークに含めていません。最近の Python バージョンのパフォーマンス改善はマルチスレッドに関連しているため、各プログラムについてマルチスレッドの変種も作成しました。合計で 4 つの異なるテストがあります。完全なテストマトリックスは実際にはかなり複雑です。なぜなら、すべての Python バージョンの下で 4 つのプログラムバリエーションを実行し、JIT および free-threading の代替案があるものはそれらも実行する必要があるからです。過去のこのベンチマーク実行では、Py Py が驚くべきパフォーマンスを示したため、Py Py でもテスト実行することを好みます。そして、Python のパフォーマンスをより広いエコシステムの中で位置づけるため、2 つのプログラムを Java Script (Node.js) と Rust にポートしました。私が取り組んだ完全なテストマトリックスは以下の通りです: 2 つのテストスクリプト: fibo.py: 再帰によるフィボナッチ数の計算; bubble.py: 再帰なしで乱数のリストをソート。 2 つのスレッドモード: シングルスレッド; 4 並列スレッド。 6 つの Python バージョン、加えて Py Py、Node.js、および Rust の最近のバージョン: CPython 3.10, 3.11, 3.12, 3.13, 3.14, 3.15; Py Py 3.12; Node 26.3; Rust 1.97. 3 つの Python インタプリタ: スタンダード; Just-In-Time (JIT): CPython 3.13 以上のみ; Free-threading (FT): CPython 3.13 以上のみ。私の過去のベンチマークの読者は覚えているかもしれませんが、私のマトリックスには Linux と mac OS のための追加次元がありました。以前の 2 回のベンチマーク実行では、それらの間に有意な差はなかったため、今回は mac OS のテストを廃止し、すべてのテストを Gentoo Linux を実行する Intel Core i5 CPU を搭載した私の Linux ラップトップで実行しました。各参加者のパフォーマンスを測定する方法は、テストプログラムを 3 回実行し、3 回の実行時間の平均をとることです。以下に共有する結果テーブルでは、3.15 バージョンとの速度差を示し、適切な場合は特定のインタプリタの前のバージョンとの速度差も示します。速度比較では、単純な比率を使用します。1x は同等の速度を意味し、0.5x は半分の速度(またはかかる時間が 2 倍)...

出典: Hacker News · 要約:HeadlinesBriefing