JavaScriptエンジン「V8 release v6.5」リリース。WebAssemblyバイナリをダウンロードと並行してコンパイル、ダウンロード完了とほぼ同時にコンパイルも完了

2018年2月7日

GoogleのChromeブラウザで使われているJavaScriptエンジンの最新版「V8 release v6.5」のリリースが発表されました

V8 release v6.5の最大の特徴は、WebAssemblyの「Streaming Compilation」(ストリーミングコンパイレーション)を実現したことです。

ダウンロードとコンパイルを並行して行うStreaming Compilation

WebAssemblyは、Webブラウザ上でネイティブコード並に高速実行が可能なバイナリフォーマット。Webブラウザにダウンロードした後でネイティブコードにコンパイルされ、実行されるというものです。

通常のコンパイルは、コンパイルすべきWebAssemblyバイナリのダウンロードが完了した後で、保存されたファイルがコンパイラに渡されてコンパイルされる、という手順を踏みます。

しかし今回実装されたStreaming Compilationは、WebAssemblyのバイナリコードのダウンロードが始まると、ダウンロードの完了を待つことなく受け取ったデータをどんどんコンパイラに渡して、ダウンロードと並行でコンパイルを行ってしまうというものです。

下記は、V8 release v6.5のStreaming Compilationが有効になるChrome 65と、そのひとつ前のバージョンであるChrome 64によるベンチマークの結果です。

青いマーカーがダウンロードにかかった時間、そして赤いマーカーがChrome 65でコンパイルにかかった時間。黄色いマーカーがChrome 64でコンパイルにかかった時間を示しています。

いちばん左の2つのマーカーは、ネットワークの帯域が25Mbit/sのときのベンチマーク結果です。Chrome 65もChrome 64も、青いマーカーが示すダウンロードにかかった時間(22秒程度)は同じですが、Chrome 65ではダウンロードが終わったあとで、赤いマーカーが少しだけ見え、すぐにコンパイルが終わったことが分かります。

一方、Chrome 64では黄色いマーカーが示すように、青いマーカーが示すダウンロードが終わった後で、黄色いマーカーが示すように10秒程度コンパイルに時間がかかっています。

真ん中の2つのマーカーはネットワークの帯域が50Mbit/sのベンチマークで、ここでもChrome 65はデータ転送が終わるやいなやコンパイルも終わっていますが、Chrome 64はさきほどと同じように10秒程度のコンパイル時間がかかっています。

いちばん右の2つのマーカーは100Mbit/sのネットワーク帯域のベンチマークで、さすがにこのスピードでWebAssemblyのコードを受け取っても、Chrome 65では並行して行われたコンパイルの速度が間に合わず、数秒程度のコンパイル時間がかかっています。

FirefoxもStreaming Compilationを実装済み

こうしてみるとChrome 65もChrome 64も、ベンチマークで使われたWebAssemblyファイルのコンパイルには10秒程度かかっているようです。

ただ、Chrome 64はダウンロードが終わった時点でコンパイルが開始されて10秒かかっているのに対し、Chrome 65ではダウンロードが始まった時点でコンパイルも開始されるためにChrome 64よりも早めに終わっているわけです。

そしてこの、WebAssemblyのバイナリをダウンロードしながらコンパイルを行うStreaming Compilationは、先月リリースされたFirefox 58でも実装されています

となるとChrome 65やFirefoxでいかにWebAssemblyのコードを早く実行するかという点において、これまでのJavaScriptと同じようにダウンロード時間を短縮するためにファイル容量を小さくする、というチューニングテクニックは引き続きとても重要なのだと言えそうです。

あわせて読みたい

WebAssembly Web技術 Chrome




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本