Dartでfireworksを書いてみた
クラスを普通の構文で扱えるのは便利だし、静的型に基づくDart Editorの補完が便利で、コーディングは容易だった。Dart EditorがEclipse系ということもあり、ActionScriptを書いている感覚にかなり近い。
ただしDart処理系もDart Editorもまだ未熟であり、標準ライブラリのソースを参照しつつのコーディングをしなければなかった。まだ本格的に使い始めるには時期尚早といえる。
JS native:
forked: fireworx - jsdo.it - share JavaScript, HTML5 and CSS
Dart to JS (compiled by frogc rev. 5549):
Dart Fireworks - jsdo.it - share JavaScript, HTML5 and CSS
せっかくだからスマートフォンでのパフォーマンスも測ってみた*1。アプリケーションの特徴としては、1080個のパーティクルがそれぞれ独立にcanvasに描画されるもので、性能はプログラムの実行よりもむしろ描画性能に左右される。
端末は Android (2.3, Xperia arc), iOS4 (iOS 4.3, Safari, iPhone4), iOS5 (iOS 5.1, Safari, iPhone4S) で、それぞれFPSを測定した。
JS Native:
Dart to JS:
JSとDartの性能はほとんどないようだ。iOS5では何度やってもなぜかDart版が速かったが、原因不明なので測定誤差と考えたほうがいいかもしれない。
また、この結果は必ずしもDartのオーバーヘッドがないことを示すわけではない。canvasを用いないコードであればDartとJSの差は開くと思われる。
*1:それぞれ JS native: http://jsrun.it/__gfx__/fireworx, Dart: http://jsrun.it/__gfx__/dart-fireworks から実行できる。