BT

V8の新たなJavaScriptインタプリタがメモリ使用量を改善する

| 作者: David Iffland フォローする 4 人のフォロワー , 翻訳者 伊藤 貴洋 フォローする 0 人のフォロワー 投稿日 2016年9月6日. 推定読書時間: 2 分 |

原文(投稿日:2016/08/25)へのリンク

Googleは新たなJavaScriptインタープリターである"Ignition"が、メモリに制限のあるAndroidデバイス向けのChrome 53で公開される予定であることを発表した。

ブログ記事にて、Googleのスタッフ・ソフトウェア・エンジニアのRoss McIlroy氏はIgnition を構築した理由について深く言及している。

現在、V8はインタプリタを持っていない。代わりに、初期実行されるJavaScriptコードがまず解析され、最適化されていない状態にコンパイルされる。パーサーとコンパイラーが組み合わさって働く仕組みのため、コードの一部は2回あるいは3回後に解析されている。GoogleによればV8はページのスタートアップ時間のうち33%をパースとコンパイルにかけているという。これは、メモリにもかなりのコストをもたらしている。

インタプリタを使用することで、Googleは現在のシステムのメモリ使用量の削減を期待している。Ignitionはパーサーに依存して入るが、JavaScriptコードはバイトコードでなくネイティブコードにコンパイルされる。「マシンコードにコンパイルするよりも、我々はより小さく簡潔なバイトコードに(Ignitionによって)コンパイルしています。よって、特に実行頻度が低い関数などにおいてメモリ使用を削減できます。」McIlroy氏は述べている。

バイトコードが小さいため、Ignitionは使われていないコードのコンパイルを避けることなく、全ソースをコンパイルすることができる。これは、現在のコンパイルプロセスのように何回も実行することなく、スクリプトは一度パースされれば良くなることを意味する。

また、McIlroy氏はいくつかの技術的な詳細部分を提供している:

Ignitionインタプリタは各オペコードにバイトコードハンドラを生成するために、TurboFanの低レベルでアーキテクチャに依存しないマクロアセンブリ命令を使用しています。TurboFanはターゲットアーキテクチャにこれらの命令をコンパイルすることで、プロセス中に低レベル命令の選択とマシンレジスタの割り当てを行います。Ignitionはレジスタマシンで、各バイトコードが明示的なレジスタオペランドとしてその入出力を指定します、これは各バイトコードが暗黙的スタックの中で入力を受け取り出力をプッシュするスタックマシンとは対象的なものです。

他のブラウザベンダーは、すでに第一段階として、インタープリタを使用している。MozillaのSpiderMonkeyとMicrosoftのChakra JavaScriptエンジンの両方がインタプリタから実行され二層コンパイルシステムと接続されている。

9月上旬に安定版としてリリースされるChrome 53からは、512MB以下のRAMを持つAndroidにおいてIgnitionが利用される。Ignitionへのより深い解説は、Googleが公開したデザインドキュメントまで。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT