순수 jQuery를 사용하는 기존 앱을 다시 작성하려고했습니다. 그것은 websocket에 의해 가져 오는 로그 데이터를 렌더링합니다. 이전 로그를 제거하고 새 레코드를 추가하여 마지막 100 개의 레코드 만 표시합니다.ractive.js에 대한 데이터 업데이트가 자주 발생합니다.
렌더링 속도가 중요하기 때문에 무작위로 들어오는 데이터를 렌더링하려고 시도했으며 Ractive는 jQuery 코드보다 두 배 느립니다. 벤치 마크를 통해 jQuery는 15 초 만에 1000 개의 레코드를 렌더링하고 30 초 만에 Ractive의 버전을 렌더링합니다. (백엔드 코드는 0.01 초 지연으로 각 이벤트를 푸시)
따라서 조정할 수있는 설정이 있습니까? 내가 사용하는 코드는 간단하다 :
Ractive0.7
와
var LogApp = Ractive.extend({
template: '#items',
init: function() {
var self = this;
socket.bind("logs", function(data_raw) {
var data = JSON.parse(data_raw);
if (self.data.items.length > 100) {
self.pop('items');
}
self.unshift('items', data);
});
}
});
var ractive = new LogApp({
el: react,
data: {
items: []
}
});
<script id='items' type='text/ractive'>
{{#each items:i}} {{>item}} {{/each}}
</script>
<script id='item' type='text/ractive'>
<tr>
<td>{{id}}</td>
<td>{{log_level}}</td>
<td>{{log_message}}</td>
</tr>
</script>
약간 혼란스럽고 18 초가 지났지 만 업데이트 빈도 (10 초)보다 느립니다. 이 기능을 사용하면 성능이 향상됩니다. – martypdx
내 코드보다 거의 두 배 빠른 18 초까지 더 빨리 수행 할 수있는 코드 예제를 제공 할 수 있습니까? – nateless
@nateless를 오랫동안 지연 시켜서 죄송합니다. 답변은 아래에 게시되었습니다. – martypdx