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と同じようにダウンロード時間を短縮するためにファイル容量を小さくする、というチューニングテクニックは引き続きとても重要なのだと言えそうです。

このエントリーをはてなブックマークに追加
follow us in feedly


≫次の記事
来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり)

≪前の記事
Webブラウザの操作をJavaScriptで自動化。Headless Chromeのフレームワーク「Puppeteer」がバージョン1.0に到達。ChromeのDevToolsチームが開発


カテゴリ



Blogger in Chief

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

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



新着記事 10本


PR - Books


fig

fig

fig