Я держу Process Explorer открытым и проверяю столбец «Private Bytes» процесса firefox.exe. После нажатия кнопки «Добавить» в этом примере:
<script id="tmplComment" type="text/x-jquery-tmpl">
<div>
<span>Comment: </span>
<span data-bind="text: $data"></span>
</div>
</script>
<input type="button" id="btnAdd" value="Add"/>
<div id="Content" data-bind="template: {name: 'tmplComment', foreach: Comments}">
</div>
С этим кодом:
var vm = {Comments: ko.observableArray(["a", "b"])};
ko.applyBindings(vm);
$("#btnAdd").click(function()
{
for(var i = 0; i<500; i++)
vm.Comments.push(i.toString());
});
(также см. this jsfiddle )
Я обнаружил, что объем приватных байтов, занятых Firefox, увеличился примерно на 50-100 МБайт.
Время выполнения также довольно велико, когда я сравниваю его с реализациями, в которых отсутствует отслеживание зависимостей, учитывая следующий пример:
<script id="tmplComment" type="text/x-jquery-tmpl">
<div>
<span>Comment: </span>
<span data-bind="text: $data"></span>
</div>
</script>
<input type="button" id="btnAdd" value="Add"/>
<div id="Content" data-bind="template: {name: 'tmplComment', foreach: Comments}">
</div>
С этим кодом:
var vm = {Comments: ko.observableArray(["a", "b"])};
ko.applyBindings(vm);
$("#btnAdd").click(function()
{
for(var i = 0; i<500; i++)
vm.Comments.push(i.toString());
});
(см. Также this jsfiddle )
Мой вопрос: при использовании Knockout.js присуща низкая производительность или я что-то не так делаю?