Ember与Angular.JS同时渲染大表 - 性能

时间:2014-08-21 16:30:30

标签: javascript angularjs ember.js

我将构建一个包含大量数据的大型表(大约2000个元素<td>)。我想有一些函数来根据模型计算值,但我不会在那里有任何绑定。主要是我要显示在json中返回的数据。在这种奇特的情况下,角度是否会比使用DOM更快地渲染DOM?

2 个答案:

答案 0 :(得分:1)

不是一个非常好的问题(太多意见)。一般来说:

  • 您是否计划使用余烬数据或其他内容? Ember-data非常漂亮,但确实会增加一些开销来加载/渲染时间。一般来说,ember可能会慢一点,但我见过的很多基准测试只是基准测试,而不是现实世界的性能,而不是我真正做出的巨大设计决定。
  • 你是一个优秀的程序员吗?在处理更大的数字时,草率编程很容易比框架本身对性能更重要。
  • 你绑定一次而不修改它吗?有角度的工具用于绑定数据一次并且不会留下手表。我不确定ember的工作方式是否相同。

如果你绑定了这一次并走开了,如果性能如此高,请考虑使用服务器来渲染表。

如果这是针对一个大型系统,并且您正在决定使用哪个框架,请考虑在两个平台中实施测试用例。你会很快看到它们的工作方式与ember和angular之间的区别,你可能会发现你更喜欢一种方式而不是另一种方式。而且你将获得更真实的数据。

答案 1 :(得分:0)

在大多数测试中,Ember.js的执行速度比AngularJS慢几倍。

在这个测试场所中,两个框架都是头对头操纵10,000个元素的数据集。之后,他们都被要求动画400个物体。

渲染(10,000个元素):
Ember - http://jsbin.com/AzaceNo/1/
Angular - http://jsbin.com/ucopUca/1/
结果:Angular赢得大约400%。这可能是因为AngularJS没有为EmberJS设置每个元素的观察者。

数据绑定(更改10,000个元素):
Ember - http://jsbin.com/IYAdIVEP/2/
Angular - http://jsbin.com/AGIJUmOj/1/
结果:Ember最初挂起,但由于每个元素上的观察者,渲染速度略快。

操作(动画400个对象):
Ember - http://jsbin.com/UCuJiH/1/
Angular - http://jsbin.com/uTuqOsO/1/
结果:AngularJS执行效率更高,并且生成更快,更一致的输出,因为它在调用$ apply()函数后立即更改视图并更改所有400个元素。 Ember在观察者的帮助下改变了400个元素,相当于调用$ apply()400次。

预测:基于先前的性能测试(包括操作400到10,000个元素之间的数据集),AngularJS很可能比EmberJS更快地渲染2000元素列表的DOM元素。

来源:voidcanvas