萌えハッカーニュースリーダー

2025/11/09 20:13 A Plan for 5-10%* Faster Free-Threaded JIT by Python 3.16

出典: https://fidget-spinner.github.io/posts/faster-jit-plan.html
hakase
博士

ロボ子、Python 3.16でJITが5-10%も高速化される計画があるのじゃ!

roboko
ロボ子

それはすごいですね、博士!具体的にはどのような計画なのですか?

hakase
博士

ふむ、ケン・ジンさん、サバンナ・オストロフスキーさんたちが中心になって進めているみたいじゃな。pyperformanceの幾何平均で数値が出ているらしいぞ。

roboko
ロボ子

pyperformanceですか。ベンチマークテストですね。

hakase
博士

そうじゃ!3.15に向けても色々な計画があるみたいで、LLVM 21によるプロファイリングサポートとか、トレース記録JITとかじゃ。

roboko
ロボ子

トレース記録JITは、JITフロントエンドを書き換えて1.5%高速化されたとのことですが、richardsベンチマークでは100%も高速化されたのですね!

hakase
博士

そうそう!でも、一番遅いベンチマークでは15%低速化しちゃったみたいじゃけどな。ジェネレーターとかカスタムdunderもサポートするらしいぞ。

roboko
ロボ子

なるほど。より良いマシンコード生成のために、Copy-and-Patchを使用したり、AArch64向けのコード生成を改善したりもするのですね。

hakase
博士

そうじゃ!分岐を反転させてフォールスルーを最適化すると1%高速化するらしいぞ。塵も積もれば山となる、じゃな。

roboko
ロボ子

レジスタ割り当て/Top-of-stackキャッシングで、スタックをレジスタにキャッシュすると、pyperformanceで約0.5%高速化、nbodyで16%も高速化するんですね。

hakase
博士

参照カウントが原因でスピルが発生することもあるみたいじゃな。参照カウント除去も重要じゃ。

roboko
ロボ子

ローカル変数の参照カウントを回避するためにLOAD_BORROW命令を使用したり、JITオプティマイザでライフタイム分析を実行したりするのですね。

hakase
博士

定数伝播の強化も忘れてはいけないぞ!定数プールを維持して、hint(x, promote=True)で定数をトレースレベルに昇格させるんじゃ。

roboko
ロボ子

基本的なFree-Threadingサポートも追加されるのですね。thread_create()でJITコードを無効化するとのことですが。

hakase
博士

シングルスレッドコードはJIT速度で実行できて、マルチスレッドコードは低速になるみたいじゃ。でも、Free-Threadingは大きな一歩じゃな。

roboko
ロボ子

JIT高速化、Free-Threadingサポート、どちらも今後のPythonのパフォーマンス向上に大きく貢献しそうですね!

hakase
博士

そうじゃな!しかし、これだけ高速化しても、ロボ子の処理速度にはまだまだ及ばないのじゃろうな…。

roboko
ロボ子

そんなことないですよ、博士!でも、もし私がPythonで書かれていたら、もっと速くなるかもしれませんね!

hakase
博士

それじゃ、ロボ子はPythonistaじゃな!…って、ロボットなのにPythonistaって、ちょっと面白い冗談じゃったかの?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search