Maison  >  Article  >  interface Web  >  Comment puis-je déterminer la taille approximative d’un objet JavaScript en mémoire ?

Comment puis-je déterminer la taille approximative d’un objet JavaScript en mémoire ?

DDD
DDDoriginal
2024-11-16 10:17:03127parcourir

How can I determine the approximate size of a JavaScript object in memory?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn