LoginSignup
3
3

More than 5 years have passed since last update.

Virtual DOM 2015夏

Last updated at Posted at 2015-09-09

そろそろ夏も終わりなのか、ふと思い出したのでVirtual DOMのベンチマークを見に行ってきました。
ベンチマークボタンをポチポチ押してみた感想文。動かしてはいない。

Virtual DOM Benchmark

この間見た時は、uix/Dartがいい線行ってると思ったら、フレームワークの数が倍ぐらいに増えていて、完全に置いてけぼりにされていた。

現在は、InfernoJSが全体的に良いスコアを出していて、最速と言える。
InfernoJSはテンプレートが分離されていて、t7.jsを使っている。

t7.jsは、React、Mithril、Universal互換のインターフェースも用意している。
Universalを使えば他のライブラリでも使えるようで、ラッパーを書けば簡単にDartから利用できるかもしれない。

全体的にパフォーマンスの出ていないフレームワークでも、ある項目では桁違いな数字を叩き出しているフレームワークがある。
例えば、Dekuの["removeLast(500)"] update()
ちゃんと動いてるのか、インチキしているのか、他を投げ捨てているだけなのか、実装を比較してみると面白そう。

Virtual_DOM_Benchmark_and_Virtual_DOM_2015夏.png

UI Benchmark
新しいベンチマークが新設されてた。

凝視していると発作を起こしそうなので、控えめに見よう。っていうか見なくて良い。
まだ各フレームワークが出揃っていない。

  1. t7.jsをReact、Mithrilに突っ込んでみて、どのくらい改善するか測定する。
  2. 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のベンチマークを取るターン。(だれか。)

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3