Comment calculer l'empreinte mémoire d'un objet JavaScript
Comprendre la consommation de mémoire des objets JavaScript est essentiel pour optimiser les performances et mettre en œuvre des applications efficaces . Cet article examinera une solution capable de déterminer avec précision la taille d'un objet donné en mémoire, offrant ainsi une compréhension plus complète de la gestion de la mémoire en JavaScript.
Solution
Bien que JavaScript ne fournisse pas de fonction intégrée permettant de déterminer directement la taille d'un objet, il est possible de développer des implémentations personnalisées fournissant une approximation raisonnable. Une approche consiste à utiliser un algorithme récursif pour parcourir les propriétés de l'objet et calculer la taille de chaque sous-élément :
function roughSizeOfObject(object) { const objectList = []; const stack = [object]; let bytes = 0; while (stack.length) { const value = stack.pop(); switch (typeof value) { case 'boolean': bytes += 4; break; case 'string': bytes += value.length * 2; break; case 'number': bytes += 8; break; case 'object': if (!objectList.includes(value)) { objectList.push(value); for (const prop in value) { if (value.hasOwnProperty(prop)) { stack.push(value[prop]); } } } break; } } return bytes; }
Cet algorithme parcourt les propriétés de l'objet, en examinant le type de chaque sous-élément. En fonction du type, il estime l'empreinte mémoire en supposant des tailles spécifiques pour différents types de données :
En considérant la structure imbriquée des objets, cet algorithme fournit une valeur approximative de la consommation totale de mémoire. Cependant, il est important de reconnaître que cette approche n'est pas exacte et peut varier en fonction de l'implémentation spécifique du moteur JavaScript.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!