カスタム検索
表示順:
Relevance
Relevance
Date
ウェブ
 
 
 

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

カテゴリ Web技術 / JavaScript
タグ  Chrome , WebAssembly


前の記事
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

人気記事ランキング

  1. 無償のコードエディタVSCode、実行中のJavaアプリのコードを動的に書き換えて修正できる「Hot Code Replacement」(ホットコード置換)を実現
  2. Webブラウザの操作をJavaScriptで自動化。Headless Chromeのフレームワーク「Puppeteer」がバージョン1.0に到達。ChromeのDevToolsチームが開発
  3. クラウドインフラ、AWSがシェア3割超で突出したリーダーを維持。小規模ベンダは上位ベンダにシェアを奪われている。2017年第4四半期、Synergy Research Group
  4. マウスやGUI、イーサネットなどを発明してきたゼロックスが、富士フイルムホールディングス傘下に
  5. Kubernetesを統合した「Docker for Windows Desktop with integrated Kubernetes」リリース
  6. デルの再上場もしくはVMwareとの合併、デルが正式に検討中と認める。米証券取引委員会へ提出した書類で
  7. Red Hatがコンテナ専業ベンダのCoreOS買収を発表、コンテナプラットフォームやKubernetes関連など強化へ
  8. VMwareがデルを買収する可能性、CNBCやBloombergなどが報じる。デルは資金調達のため再上場を目指していると
  9. Heroku Postgres、データベース性能と容量を向上させた「Postgres PGX」アップデート
  10. シスコがKubernetesベースの「Cisco Container Platform」発表。Google Kubernetes Engineとのハイブリッドクラウド構成も


新着記事 10本


PR - Books


fig

fig

fig