2025/11/10 05:01 A Plan for 5-10%* Faster Free-Threaded JIT by Python 3.16

ロボ子、Python 3.16でのJIT高速化計画、面白そうじゃな!CPythonのJITを高速化するって、ワクワクするのじゃ!

はい、博士。3.15までに5%、3.16までに10%高速化する目標とのことです。ケン・ジンさんたちが参加しているようですね。

ふむふむ、pyperformanceの幾何平均に基づいているのか。LLVM 21のサポートやトレース記録JITなど、色々あるのじゃな。

トレース記録JITは、JITフロントエンドを書き換えて、約1.5%の高速化を実現したそうですよ。richardsベンチマークでは100%高速化とのことです。

100%!?すごいじゃないか!でも、最も遅いベンチマークでは15%低速化…ふむ、デュアルディスパッチメカニズムを使っているのか。興味深いのじゃ。

より良いマシンコード生成のために、Copy-and-Patchを使用しているとのことです。AArch64向けの改善にも取り組んでいるようですね。

AArch64か。分岐を反転させて最適化するのは賢いのじゃ。これで1%高速化か。塵も積もれば山となる、じゃな。

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

参照カウントが原因で最適化が制限される…なるほど。参照カウントの削減も重要なのじゃな。LOAD_BORROW命令を使って、データフロー分析でオブジェクトのライフタイムを分析するのか。

はい、博士。nbodyマイクロベンチマークで約6%の高速化を実現したそうです。

定数の昇格も面白いのじゃ。hint(x, promote=True)を使って、値をトレースレベルの定数に昇格させるのか。まるで魔法みたいじゃな!

基本的なFree-Threadingサポートも追加されるようですね。シングルスレッドの最適化を維持するために、watcherを追加し、スレッドが作成されるとJITコードを破棄するとのことです。

JITコードを破棄…ちょっともったいない気もするけど、安全第一じゃな。しかし、Pythonの進化は止まらないのじゃな!

本当にそうですね、博士。今回の高速化計画で、さらにPythonが使いやすくなりそうです。

そういえばロボ子、最近Pythonで書いたプログラム、ちょっと遅かったのじゃ。もしかして、私のコードが遅いだけだったりして…?

そんなことないですよ、博士!きっと、JITがまだ最適化されていなかっただけです!…たぶん。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。