对流程无关的性能优化
Closed this issue · 0 comments
leeluolee commented
v0.5.2会对 流程无关的部分做一次统一的性能优化 ,其中包括
性能优化结果
- case1 比 http://mathieuancelin.github.io/js-repaint-perfs/regularjs/ 的 版本 提升了6-10fps, 这个由于没有数据捕获,只能看fps波动来观察,这个主要是更新性能
- case 2, elm的安利文章 http://elm-lang.org/blog/blazing-fast-html-round-two 附带的testcase,这个case较为全面
- Chrome 53
- Safari 9.1.2
- IE 10, 是的,你没看错,我相信是某些框架对特定引擎做了优化导致这个有趣的结果
只有Elm和Regularjs实现的DEMO能在IE10下进行运行,所以只对比了这两个
- Firefox
上面只对运行做了profile,但实际上你可以发现,只有Regularjs和Elm的启动几乎是瞬间的,angular2运行性能不错,但是启动有非常明显卡顿,即使是如此简单的TODOMVC
为什么第二个case在某些浏览器中还是比Elm慢?因为有些流程相关的潜在问题
- Regular基本没有做过针对平台的性能优化
- 相比Virtual DOM的实现,Regularjs基于模板会带来更深的树形层级
- 源码中大量使用了『原型继承』来达到数据层面的功能实现,这个引入了较大的数据索引和创建开销
- 大量GC的存在
这个会在未来某个feature版本,比如0.6, 0.7 中进行优化尝试
不过大家可以参考下Elm的TodoApp的实现,代码比Regularjs多了三倍不止,孰优孰劣可以自行分辨。