V8の多段階コンパイル戦略 (2025年調べ)
https://gemini.google.com/u/shokai@notainc.com/app/5fd36c4a54e18d32 で調査したshokai.icon
V8のJITコンパイラは、コードの使用頻度や内容に応じて、最適化の深さが異なる3つのコンパイラを使い分ける
Tiered Compilationという方式
起動速度と最大性能を両立できる
V8では4 tierになっている
1. Ignition
インタプリタ兼プロファイラ
まずバイトコードに変換して実行し、コードの実行情報を収集する
2. Sparkplug
あまり最適化しないコンパイラ
高速に起動する
3. Maglev
Sparkplugよりも最適化したコードを、TurboFanよりも高速に生成するコンパイラ
4. TurboFan
高度な最適化を行うコンパイラ
時間はかかるが、最高のパフォーマンスを発揮するコードを生成する
降格もあるらしい
TurboFanでコンパイルして実行してみたけど、やっぱりSparkplugにする、等
V8はまずIgnitionの作ったプロファイルに基づいて投機的に最適化してみるが、やっぱり実行時に変化する値があったりして、最適化できない事もある為