我们使用EmberJS(版本1.0.0-rc5)创建了一个Web应用程序。我们注意到Chrome的出色表现,遗憾的是我们必须支持Internet Explorer 7作为我们的主要平台。
我们注意到IE7的性能非常糟糕。在调查问题后,它归结为模板的渲染(尽管路由也非常慢)。如果这是由于我们构建应用程序的方式错误或者这是Ember的问题,我们不知道。
我创建了一个小样本应用来重现问题。您可以在http://manoswerts.be/playground/ember-performance找到它。它呈现的树类似于我们在应用程序中执行的操作。在Chrome中运行时,结果会立即显示。在IE7中,渲染需要30秒到一分钟。在IE8中,“仅”需要7秒钟。
有人熟悉这个吗?这个问题有解决方案吗?
非常感谢任何帮助。
答案 0 :(得分:1)
尝试添加以下内容以获取更长时间的详细信息:
Ember.subscribe('render', {
before: function(name, start, payload){
return start;
},
after: function(name, end, payload, start){
var duration = Math.round(end - start);
var template = payload.template || '';
//console.log(Ember.inspect(payload));
//var title;
var view = payload.object.toString();
console.log('rendered', template, view, 'took', duration, 'ms');
}
});
这将为您呈现每个渲染的视图提供时间。当我在Chrome中运行您的示例时,每个人模板都需要大约2毫秒来渲染。还有一些与嵌套{{each}}
帮助程序相关的开销,并在这些{{each}}
块中呈现“虚拟”视图。列表渲染时间总共为104毫秒。总时间将是您点击Show results
按钮后写入的最后一个console.log行。
因此,基于你所说的话,我希望ie7和ie8的总时间要慢一个数量级。如果是这种情况,想知道它是否均匀分布,或者是否有特定的视图呈现得慢得多。
答案 1 :(得分:0)