ホームページ > ウェブフロントエンド > jsチュートリアル > メモリ内の JavaScript オブジェクトのおおよそのサイズを確認するにはどうすればよいですか?

メモリ内の JavaScript オブジェクトのおおよそのサイズを確認するにはどうすればよいですか?

DDD
リリース: 2024-11-16 10:17:03
オリジナル
197 人が閲覧しました

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

JavaScript オブジェクトのサイズの決定

はじめに

JavaScript オブジェクトのメモリ使用量の推定JavaScript オブジェクトは困難な作業になる可能性があります。この記事では、JavaScript オブジェクトのサイズの取得に関する最近の問い合わせにヒントを得て、JavaScript でオブジェクトのおおよそのサイズを決定する包括的な方法を検討します。

問題への対処

Marks と Student という 2 つの関数を定義し、新しい Student をインスタンス化する次の JavaScript コードについて考えてみましょう。 object:

function Marks() {
  this.maxMarks = 100;
}

function Student() {
  this.firstName = "firstName";
  this.lastName = "lastName";
  this.marks = new Marks();
}

var stud = new Student();
ログイン後にコピー

オブジェクト サイズの推定

JavaScript には、C の sizeof() 演算子に似た組み込み関数がありません。ただし、スタッド オブジェクトのサイズを推定するカスタム関数を考案できます。

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;
}
ログイン後にコピー

この関数は、プリミティブ値のサイズ (ブール値の場合は 4 バイト、ブール値の場合は 8 バイト) を考慮して、オブジェクトを再帰的に走査します。数値)と文字列の長さ(バイト単位)(2 を乗算)。また、無限再帰を防ぐためにオブジェクト リストも維持します。

結論

この関数を使用すると、配列やカスタム オブジェクトを含む任意の JavaScript オブジェクトのサイズを概算できます。 。この方法は、特にパフォーマンスが重要なアプリケーションでメモリ使用量を最適化するのに役立ちます。これは正確な値ではなく推定値を提供しますが、JavaScript のオブジェクトのメモリ フットプリントに関する貴重な洞察を提供します。

以上がメモリ内の JavaScript オブジェクトのおおよそのサイズを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート