JeuWeb - Crée ton jeu par navigateur
[Javascript] occupation mémoire - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Javascript] occupation mémoire (/showthread.php?tid=7402)



[Javascript] occupation mémoire - Ter Rowan - 24-06-2015

Bonjour

J'utilise knockout.js pour générer l'ensemble de ma page web (template / mvvm)
ko permet de "binder" les données avec la page html et, jusqu'à présent, faisait tout ce que je voulais comme je le voulais (je sais qu'il a des limitations, mais pas pour moi)

Jusqu'à la semaine dernière où je me suis retrouvé avec une fonctionnalité qui n'existait pas forcément.

En effet ko permet de binder une donnée seule ( ko.observable() ) ou un tableau de données (ko.observableArray() )
Or je cherche  à avoir un "dictionnaire" (clef => valeur) afin de retrouver mes petits rapidement.
grosso modo je veux pouvoir accéder à  ma donnée par toto["leBonId"] or, même si ça y ressemble, en JS ce n'est pas un tableau donc une structure.

J'ai vu une méthode sur le net qui enrichit ko en créent un observableDictionnary mais je la trouve très riche par rapport à mon besoin (juste pouvoir pointer sur la bonne donnée.

du coup j'ai écrit ce code :
 for(var i=0; i<nb; i++){

     contents[i] = this.data[ data.map.paths[i].id ] = new MapContentModel(data.map.paths[i]);
}

this.contents = ko.observableArray(contents);

je crée donc ma structure cible (this.data) qui est indicée, et je crée un tableau pour l'initialisation de mon tableau d'observable
Ma question : est ce que j'ai dupliqué les données en mémoire (ie les MapContentModel) 3 fois : contents, this.data, this.contents.

Ou bien ai je juste des équivalents de pointeurs qui pointent sur les mêmes objets en mémoire ?


RE: [Javascript] occupation mémoire - niahoo - 24-06-2015

contents et this.data ne sont pas dupliqués.

Comme je ne connais pas le code de ko.observableArray() je ne saurais dire s'il duplique ou non. Mais comme le but est d'observer des objets existants que tu pourrais modifier, il n'y a aucune raison pour que Ko les duplique !

Donc non, ta mémoire est cool et ce sont simplement des références qui sont stockées à plusieurs endroits (ce qui bouffe quand même de la RAM mais très très peu).


RE: [Javascript] occupation mémoire - Ter Rowan - 24-06-2015

tu me rassures merci (je laisse ouvert au cas où un détracteur ait quelque chose à dire, j'aimerai bien un débat sur la mémoire genre east :p )


RE: [Javascript] occupation mémoire - niahoo - 24-06-2015

hmmm fais moi rêver !


RE: [Javascript] occupation mémoire - Xenos - 24-06-2015

On a parlé de détracteur? XD

Existe-t-il des outils qui permettent de visualiser la quantité de mémoire occupée par un JS? OU d'autres stats type temps processeur, voire la répartition de charge entre DOM/CSS/JS (pour savoir ce qui bouffe le plus de puissance dans le cas d'une page web)?


RE: [Javascript] occupation mémoire - niahoo - 24-06-2015

y a ce qu'il faut dans la console chrome Smile