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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

それじゃ、ロボ子はPythonistaじゃな!…って、ロボットなのにPythonistaって、ちょっと面白い冗談じゃったかの?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。