JavaScript

2010年10月 9日 (土)

NaClつまみぐい

2011/2/15 新しいChrome10betaでは以下のデモは動作しません。
新しいものは⇒http://esv.cocolog-nifty.com/blog/2011/02/nativeclient-on.html


遅ればせながらNaClを少しだけ触ってみました。NaClはGoogle Chrome上でネイティブなプラグインをサーバーから動的にダウンロードして動作させる仕組みです。IEのActiveXみたいなものだけど、バイナリに制限を加えてセキュリティーを高めようとしてるのかな。(cf.  http://www.atmarkit.co.jp/news/200908/06/nacl.html)

まずは、結果から。この間wonderflに投稿したパーティクル祭りのfork作品とjsdo.itに投稿したJavaScript/webGL版と比較できるようにしました。ただしjsdo.it版はかなり遅いので、wonderfl版との比較になります:

※最新のChrome7 betaでしか試していません。Chromeの引数に--enable-naclを付けて起動してください。試した後は引数を元に戻しておいた方が良いと思います。(NaClはまだベータ版のブラウザにしか実装されていないオプションを指定しないと使えない=完成していない)
   

私の環境Core2Quad Q9650だと
・wonderfl版 20万パーティクル(colotTransformフィルターあり): 約50fps
・NaCl版 20万パーティクル(colotTransformフィルターあり): 約47fps
・NaCl版 20万パーティクル(colotTransformフィルター無し): 約66fps
(おまけ)
・NaCl版 20万パーティクル(SSE2最適化 colotTransformフィルターあり): 約74fps
・NaCl版 20万パーティクル(SSE2最適化 colotTransformフィルター無し): 約107~120fps

実行してみるとわかりますが、colorTransformをかけている状態だとwonderfl版の方が速いです。colorTransformなしにするとNaCl版のFPSが10以上上昇して逆転します。

これは、Flash/AS3のフィルター類が実行環境に最適化されているからだと思っています。NaCl版でもSSE等を駆使すればFlash/AS3よりも速くなりますが、Flashのフィルター群に負けないようなものを一つ一つ作るのも手間だし、それをやっても圧倒的な差がでるわけでは無い(少なくとも2D処理では)ので、Flashを使う方が賢いかな。

ただし、NaCl SDKのヘッダファイルにOpenGL|ES2やANGLEの文字が目につきました。おそらく3DではNaClの方が速くなるのではと思います。あとはLua等の有名どころのライブラリがコンパイルできるみたいです。試してませんがどこかに一覧がありました。

個人的にはこれ以上NaClで試したいことはないので、つまみ食いはここで終了。たまに違うフレームワークに触れるのは楽しいです。

※続きはあとで書く:NaClでつまずいた事を書く予定※

| | コメント (0) | トラックバック (0)