概要
- CPython JIT が目標より早くパフォーマンス向上を達成
- コミュニティ主導 とチームワークが成功要因
- 技術的転換点 はトレース記録や参照カウント削減
- インフラ整備 と日々のフィードバックの重要性
- 人との交流 や運の要素も大きな役割
CPython JITの進捗と成果(2026年3月時点)
- macOS AArch64 でJITはインタプリタ比約11-12%高速化
- x86_64 Linux でも標準インタプリタ比5-6%高速化
- 3.15 alpha JIT の数値は幾何平均・暫定値
- パフォーマンス幅 は20%低下から100%以上の高速化まで
- free-threading 対応は3.15/3.16で目指す
- JIT開発 は一時困難だったが、再び軌道に乗る
JITプロジェクトの苦難と転機
- 3.13/3.14 JIT はほぼ速度向上なし、むしろ遅かった
- Faster CPythonチーム は資金提供者を失い、未来が不透明に
- 主要貢献者 (Savannah Ostrowski, Mark Shannon, Diego Russo, Brandt Bucher, Ken Jinなど)が継続
- 運とタイミング、適切な人材が揃ったことが成功の鍵
- 貢献者拡大 のため、作業分割と明確な手順書を用意
コミュニティ主導による開発体制強化
- バス係数低減 を目指し、各段階で2名以上のアクティブメンバー配置
- 中間処理(middle-end) の貢献者が2名から4名に増加
- Brandt による問題分割と「最適化タスクの細分化」
- 新規貢献者 が参加しやすい環境整備
- 11名の貢献者 がインタプリタ命令の変換作業に参加
- 成果の可視化 と達成の祝福がモチベーション向上に寄与
技術的ブレークスルーと幸運
- トレース記録型JIT への転換が大きな効果
- Brandt の提案から始まり、初期は失敗だったが設計変更で成功
- dual dispatch 方式でインタプリタの肥大化を回避
- JITコードカバレッジ が50%増加し、最適化の効果が倍増
- 参照カウント削減 の最適化
- Matt Page の先行研究を基に、分岐削減で大幅な高速化
- 教育的価値 も高く、新規貢献者の学習機会となる
インフラと日常的なフィードバック
- Savannah が実質一人でインフラを担当
- 4台のマシン で日常的なJITパフォーマンス計測
- パフォーマンス回帰 の早期発見と最適化効果の可視化
- ARM対応 やプロファイラ対応など多様な技術課題にも挑戦
人とのつながりと学び
- PyPy 開発者CF Bolz-Tereickとの交流
- Max Bernstein らとのコンパイラ談話でモチベーション維持
- 他プロジェクト参照 による視野拡大と技術力向上
- 知識やアイデアの共有 がプロジェクト成功に不可欠
結論:人と運がJITを動かす
- 人の力 と 幸運 がCPython JITの進化を支える
- JIT go brrr (JITが速く動く!)