Javascript ractive.js的频繁数据更新

Javascript ractive.js的频繁数据更新,javascript,ractivejs,Javascript,Ractivejs,我在考虑重写使用纯jQuery的遗留应用程序。它呈现websocket获取的日志数据,通过删除旧记录并附加新记录,只显示最后100条记录 因为渲染速度很重要,我首先尝试渲染随机传入的数据,Ractive的速度比我们的jQuery代码慢两倍。根据基准测试,jQuery在15秒内呈现1000条记录,Ractive的版本在30秒内呈现。(我们的后端代码以0.01秒的延迟推送每个事件) 因此,我想知道是否有任何调整设置?我使用的代码很简单: var LogApp=Ractive.extend({ 模板

我在考虑重写使用纯jQuery的遗留应用程序。它呈现websocket获取的日志数据,通过删除旧记录并附加新记录,只显示最后100条记录

因为渲染速度很重要,我首先尝试渲染随机传入的数据,Ractive的速度比我们的jQuery代码慢两倍。根据基准测试,jQuery在15秒内呈现1000条记录,Ractive的版本在30秒内呈现。(我们的后端代码以0.01秒的延迟推送每个事件)

因此,我想知道是否有任何调整设置?我使用的代码很简单:

var LogApp=Ractive.extend({
模板:“#项目”,
init:function(){
var self=这个;
socket.bind(“日志”),函数(数据_原始){
var data=JSON.parse(data_raw);
如果(self.data.items.length>100){
self.pop('items');
}
自动取消移位(“项目”,数据);
});
}
});
var ractive=新的日志应用程序({
埃尔:反应,
数据:{
项目:[]
}
});

{{{#每个项目:i}{{>item}{{{/each}}
{{id}
{{log_level}}
{{log_message}}

使用Ractive
0.7
,性能现在更好了。它的运行时间约为11秒,每项约为10毫秒(请参阅)

您也可以尝试使用
合并
,而不是两个操作,
pop
unshift

        var copy = self.get('items').slice();

        if (copy.length > 100) {
            copy.pop();
        }
        copy.unshift(data);

        self.merge('items', copy);

例如,打开开发工具的时间和时间会影响时间,因为它是console.time记录每个项目的,所以请尝试不使用


好奇的是,
0.8
中出现了一些变化,每个条目的更新速度将达到~
1ms

我做了一些调整,将更新速度降低到18秒,但仍然低于更新刷新速度(10秒)。我们将使用它来帮助提高性能。您能否提供一些代码示例,说明如何将其速度提高到18秒,这几乎是我的代码速度的两倍?对于@Natless的长时间延迟,我深表歉意。回答贴在下面。嗨,martypdx,你能解释一下“使用边缘”是什么意思吗?