V8の新しいバージョンは50%高速になります

本日、V8用の新しいコンパイルインフラストラクチャであるCrankshaft(Crankshaft- 約Per )、JavaScriptエンジンGoogle Chromeをお届けします。 クランクシャフトは積極的な最適化を使用して、リソースを集中的に使用するJavaScriptアプリケーションのパフォーマンスを大幅に改善します。多くの場合、2倍以上です。 これにより、複雑なコードを使用するWebページとアプリケーションの応答性が向上し、ユーザーがより高速になります。 標準のV8テストスイートで、Crankshaftを使用した場合と使用しない場合のChromeのパフォーマンスを比較します











何よりも、CrankshaftはRichards、DeltaBlue、およびCryptoベンチマーク結果を改善します。 これは、オブジェクトのプロパティ、算術演算、重いループ、関数呼び出しにアクセスする操作を高速化したことを示しています。 全体的に、CrankshaftはこのテストスイートでV8のパフォーマンスを50%向上させます。 これは、2008年のChromeのリリース以来の最大のブレークスルーです。







Crankshaftは、テストで測定されたピークパフォーマンスの向上に加えて、GMailなどのWebアプリケーションの初期化時間も短縮しました。 ページのリロードテストでは、Crankshaftが大量のJavaScriptコードでページの読み込み時間を12%短縮することが示されました。



クランクシャフトはアダプティブコンパイルを使用して、起動時間と最大パフォーマンスの両方を向上させます。 アイデアは、頻繁に実行されるコードを大幅に最適化し、めったに実行されないコードの最適化に時間を浪費しないことです。 このため、クランクシャフトを使用すると、数ミリ秒で実行されるテスト(SunSpiderなど)でわずかな加速しか示されません。 アプリケーションが大きいほど、新しいエンジンの効果は大きくなります。



クランクシャフトは4つの主要なコンポーネントで構成されています。

  1. ベースコンパイラはすべてのコードに使用されます。 高速で動作し、複雑な最適化を行いません。 ベースは、Chrome 9のV8の2倍の速度であり、30%少ないコードを生成します。
  2. 実行プロセスを監視し、実行に最も時間がかかるコードの「ホット」セクションを見つけるプロファイラー
  3. 検出されたホットセクションのコードを再コンパイルする最適化コンパイラループ不変式の移動または削除線形スキャン [1]、 埋め込みなどの最適化にSSA表現を使用します。 最適化コンパイラは、作業中のコードの初期バージョンの実行中に収集された情報を使用します。
  4. 最適化解除のサポート。これにより、最適化コンパイラは、個々の最適化の有用性に関する見積もりで自由になります。 コンパイラが1つまたは別の最適化を選択するために使用した仮定が間違っていることが判明した場合、ベースコンパイラが受け取ったコードの実行に戻ることができます。
32ビットアーキテクチャのIntelプロセッサー向けクランクシャフト付きV8は、 最先端の V8リポジトリーとGoogle Chromeのテストバージョンで既に利用可能です。 ARMおよび64ビットアーキテクチャ向けのアセンブリの作業は既に進行中です。



Crankshaftで達成したJavaScriptコードの速度に満足しています。 CrankshaftはV8をさらに加速するための優れたインフラストラクチャを提供し、次世代のWebアプリケーションのJavaScriptパフォーマンスの向上を引き続き推進します。



Kevin Millikin、ソフトウェアエンジニアおよびFlorian Schneider、ソフトウェアエンジニア



[1] 翻訳明確にしてくれたmralephに感謝します。



All Articles