Google Chromeチームは2021年5月27日(米国時間)、「Chromium Blog: Chrome is up to 23% faster in M91 and saves over 17 years of CPU time daily」において、Google Chrome 91で最大23%の高速化を実現したと伝えた。V8エンジンに新しいJavaScriptコンパイラを追加し、さらにV8エンジンが利用するコードのメモリ配置位置を最適化する機能によって、この高速化を実現したと説明している。
ChromeはV8エンジンと呼ばれるJavaScriptコンパイラでJavaScriptを処理している。JavaScript処理の高速化はそのままWeb体験の高速化に直結するほど重要な要素だ。
V8エンジンには「Ignition」と「Turbofan」という2つのコンパイラが搭載されている。Ignitionはバイトコードインタプリタで、JavaScriptをできるだけ迅速に処理開始することに重きを置いている。TurbofanはJavaScript実行中に情報を収集し、収集したデータに基づいて高速なネイティブコードを生成する最適化コンパイラだ。その特性上、Turbofanによって処理が行われるまではIgnitionが処理を行うことになる。V8エンジンはこの2つのコンパイラをどちらも利用することでJavaScriptコードを処理している。
今回このV8エンジンに新しく「Sparkplug」と呼ばれるコンパイラが導入された。IgnitionとTurbofanの中間を取りなすコンパイラで、ネイティブコードを生成するタイプのコンパイラだ。Turbofanとの違いは実行時の情報を収集してバイトコードを生成するのではないという点にある。これによってTurbofanよりも早いタイミングでネイティブコードを生成し、高速な処理を実現できる。
Chrome M91で導入されるもうひとつの最適化はV8エンジンが生成したコードのメモリ上の配置に関する最適化だ。V8エンジンが生成するコードはメモリ上に断片的に配置される。この配置を工夫することでCPU内部の最適化機能が失敗する頻度を下げ、処理速度の高速化に寄与させている。Google Chromeチームは特に、この最適化はApple M1チップで高い効果を発揮すると説明している。