Maison > Article > interface Web > Comment puis-je déterminer la taille approximative d’un objet JavaScript en mémoire ?
Détermination de la taille d'un objet JavaScript
Introduction
Estimation de l'utilisation de la mémoire d'un L'objet JavaScript peut être une tâche difficile. Dans cet article, nous explorerons une méthode complète pour déterminer la taille approximative d'un objet en JavaScript, inspirée d'une enquête récente sur l'obtention de la taille d'un objet JavaScript.
Résoudre le problème
Considérez le code JavaScript suivant qui définit deux fonctions, Marks et Student, et instancie un nouvel Student object:
function Marks() { this.maxMarks = 100; } function Student() { this.firstName = "firstName"; this.lastName = "lastName"; this.marks = new Marks(); } var stud = new Student();
Estimation de la taille de l'objet
JavaScript ne dispose pas d'une fonction intégrée similaire à l'opérateur sizeof() en C . Cependant, nous pouvons concevoir une fonction personnalisée pour estimer la taille de l'objet stud :
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; }
Cette fonction parcourt l'objet de manière récursive, en tenant compte de la taille des valeurs primitives (4 octets pour booléen, 8 octets pour nombre) et la longueur des chaînes en octets (en multipliant par 2). Il maintient également une liste d'objets pour empêcher une récursion infinie.
Conclusion
En utilisant cette fonction, vous pouvez approximer la taille de n'importe quel objet JavaScript donné, y compris les tableaux et les objets personnalisés. . Cette méthode peut être utile pour optimiser l'utilisation de la mémoire, en particulier dans les applications critiques en termes de performances. Bien qu'il fournisse une estimation plutôt qu'une valeur exacte, il offre un aperçu précieux de l'empreinte mémoire des objets en 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!