Je laisse Process Explorer ouvert et inspecte la colonne "Private Bytes" du processus firefox.exe. Après avoir appuyé sur le bouton "Ajouter" dans cet exemple:Knockout.js consommant trop de mémoire
<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>
Avec ce code:
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());
});
(voir aussi this jsfiddle)
je fais l'expérience que les octets privés prises par Firefox a augmenté d'environ 50-100 MByte.
Le temps d'exécution est assez long quand je le compare à des implémentations qui ne ont pas suivi des dépendances, étant donné cet exemple:
<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>
Avec ce code:
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());
});
(voir aussi this jsfiddle)
Ma question: Est-ce que les performances sont faibles lors de l'utilisation de Knockout.js ou est-ce que je fais quelque chose de mal?
Ceci est une bonne idée, mais n'aide malheureusement pas le problème de mémoire. Beau blog BTW! – kahoon
J'espère pouvoir me pencher là-dessus à un moment donné. Cela aide la mémoire cependant si vous poussez plusieurs articles de la manière que j'ai montrée ci-dessus plutôt qu'un par un. –