そろそろ夏も終わりなのか、ふと思い出したのでVirtual DOMのベンチマークを見に行ってきました。
ベンチマークボタンをポチポチ押してみた感想文。動かしてはいない。
この間見た時は、uix/Dartがいい線行ってると思ったら、フレームワークの数が倍ぐらいに増えていて、完全に置いてけぼりにされていた。
現在は、InfernoJSが全体的に良いスコアを出していて、最速と言える。
InfernoJSはテンプレートが分離されていて、t7.jsを使っている。
t7.jsは、React、Mithril、Universal互換のインターフェースも用意している。
Universalを使えば他のライブラリでも使えるようで、ラッパーを書けば簡単にDartから利用できるかもしれない。
全体的にパフォーマンスの出ていないフレームワークでも、ある項目では桁違いな数字を叩き出しているフレームワークがある。
例えば、Dekuの["removeLast(500)"] update()
。
ちゃんと動いてるのか、インチキしているのか、他を投げ捨てているだけなのか、実装を比較してみると面白そう。
UI Benchmark
新しいベンチマークが新設されてた。
凝視していると発作を起こしそうなので、控えめに見よう。っていうか見なくて良い。
まだ各フレームワークが出揃っていない。
- t7.jsをReact、Mithrilに突っ込んでみて、どのくらい改善するか測定する。
- t7.jsのDartラッパーができたら、uixに突っ込んでどのくらい改善するか測定する。
というのが、うまい具合にいくといいなあ。
(1は、誰かやってくれるといいなあ。)
追記1
uixの作者 Boris Kaul氏によると、
- JS実装をDartでラップすると、DartのJsObjectでのオーバーヘッドが大きくなってしまう。 詳しくは、react-dartで。
- t7.jsのベンチマークスコアはcacheの影響が大きいらしい。(えー)このcache機能は暗黙的でOFFにはできないようだ。
ということで、uixにはt7.jsは来ない。
t7.jsを使っているInfernoJSを除くと、cito.js、vidomあたりが最速になってくる。
vidomは、ブラウザによってパフォーマンスに開きがある。
Vidom is 15x faster in Chrome, 10x faster in Firefox and 2x faster in IE than React.
Mobile SafariとChromeを優先してくれるとありがたいかなー。
この辺りの成果がuixに反映されると期待して、
ぜひ次回はAngular2のレンダリングにuixを使うターンに行ってみたい。
追記2
Boris Kaul氏にuixのロードマップを尋ねてみたが、今後は大きな変更は入らないかもしれない。という感触。
メモリサイズとGCを抑える・モバイルブラウザに配慮した、Virtual DOMのGoogle実装が作業中であることを知る。
Dart portingもあった。コミッタはGooglerでdart-langの中の人。
次回、Incremental DOMのベンチマークを取るターン。(だれか。)