SKY NOTE

skymouseが思った事考えた事を記したもの

Pref..
Speech
STOP
Follow..
QR Code
|◀
▶|
QR
×
voice
volume
0
rate
0
pitch
0

JavaScriptを大幅に高速化する「asm.js」

JavaScriptが大幅に高速化するようだ。その名は「asm.js」速度は、ネイティブコードの半分程度の性能を有するらしい。JavaScriptコードは、実行速度がネイティブコードの10倍は遅いと感じていたので、それが2倍程度に収まるというのは大幅な躍進である。既にFirefox22の開発バージョンでは採用されており、ベンチマークも紹介されているので、それを見てみよう。

マイクロベンチマーク(asm.js 紹介スライド)
http://kripken.github.com/mloc_emscripten_talk/#/27

ネイティブコードがオレンジ、通常JavaScriptFirefox JavaScript)が青、asm.jsが緑である。大体、オレンジのネイティブコードと比べて、目視で1.3〜2.2倍程度の時間で処理が完了していることが見て取れる。従来のJavaScript(青)がネイティブコードに比べて、1.7〜3.8倍程度の処理時間であるのに比べれば、asm.jsは、ほぼ2倍の性能を出していると考えられる。特にChromeJava(赤)のコードと比べると、ものによっては10倍くらい速い事になる。ただ、このベンチマークは、自分の体感的なJavaScriptの速度とはちがう。JavaScriptはもっと遅いと感じる。そういう目線で見ると、こちらのベンチマークの方がリアルに感じる。

Realistic/Large ベンチマーク
http://kripken.github.com/mloc_emscripten_talk/#/28

ネイティブコードの処理時間を1としたグラフで、通常のFirefox JavaScript(青)が4.5倍〜12倍程度、遅いのに対して、asm.jsの緑のコードは、2〜2.4倍程度の時間で処理できている。大体、從來のJavaScriptに対し、2〜5倍高速に動くということだ。このベンチマークスコアの方がJavaScriptの10倍遅いという自分の体感速度に近いので、それが2倍程度の時間に収まるということは、従来の5倍程度速いということになる。つまり、かなり使えるスピードにJavaScriptがなるということである。そういう意味では從來のJavaScriptのイメージとは根本的にちがうスペックといえる。asm.jsは、細かい最適化を積み上げて、この速度に至ったという。故に從來のJavaScriptに何ら改変を加えること無く動くという。(追記:動くには動くが変数の型を固定するなど、対応したコードでしか高速化はされない)つまり、JavaScriptになると、異常にもっさりとしたアプリが、(追記:asm.jsに対応したコードに書き直されると)さくさく動くようになるということ。(追記:asm.js対応していない従来型のコードは高速化されないようだ。残念)

この高性能なJavaScriptエンジン仕様「asm.js」のリリースは6月ということなので、非常に待ち遠しい。これによってFirefox OSの速度が飛躍的に向上する。ARMプロセッサの速度向上と合わせて考えれば、もう殆どのアプリケーションばJavaScriptHTML5で十分な速度で動くことが考えられる。また、JavaScriptからOpenCLなどを呼び出して使えば、GPUベースの高速化も出来るため、さらに速度アップが望めるだろう。そういう意味で、asm.jsとOpenCLなどのミドルウェアをうまく使えば、ネイティブアプリと遜色ないアプリケーションがJavaScriptでも作れるようになるということだ。

 インテルJavaScriptに並列処理機能を追加する「River Trail」
 http://www.publickey1.jp/blog/11/javascriptriver_trailidf_2011.html

つまり、これによってJavaScriptは10倍も遅いので、実力が足りず、二級アプリしか作れなかったが、それが処理時間2倍程度に収まるということは、アプリによってはJavaScriptの方が速いという事態も生じるだろう。(ダメなネイティブコードよりも優れたJavaScriptコードの方が速かったりする事態も生じることだろう)

これにより、世界は変る。OSによるプラットホームの垣根はなくなる。ブラウザを介して、すべてが統合される。それがどういう世界をもたらすのか、それはゲーム機がPCなどのアプリ市場に食い込める状況が生まれる。これは、要するにPCとゲーム機の垣根も無くしてしまう。そういう意味でゲームをするならば、ゲーム機ということになるのかもしれない。なぜならば、お互いの違いは、ゲームをするのにどれだけ最適化されているか否かという違いでしかなるのだから。つまり、ゲームをするのには、コントローラーの付属しているゲーム機という事になる。また、タブレットを買って、ワイヤレスコントローラーを買えば良いということでもあるかも知れない。そういう何でもありの状況になる。