ブラウザによって差はあると思いますが、
しかし、Javascript で配列またはその 1 つの要素がどれだけのメモリを消費するかを調べるにはどうすればよいでしょうか?
型付き配列を使用するときにどれだけのスペースを節約できるかを知りたいです。
前もって感謝します!
ブラウザによって差はあると思いますが、
しかし、Javascript で配列またはその 1 つの要素がどれだけのメモリを消費するかを調べるにはどうすればよいでしょうか?
型付き配列を使用するときにどれだけのスペースを節約できるかを知りたいです。
前もって感謝します!
これは、さまざまな側面に依存します。
現実は違います。クライアント側のストレージについてはあまり心配する必要はありません。少なくともこの方法ではありません。本当に必要な唯一のメモリ固有のコントロールはmemoizationです。それ以外は、いわばトレースをクリーンアップするだけです。OOP 環境にいる場合は、常に参照をインスタンス化し、参照が終わったらdelete
参照を null にするようにしてください。COM
DOM
コレクション (配列) を空にしたい場合は、単純にdelete
演算子を使用します。コレクションをインスタンス プロパティとして定義するのではなくvar
、コンテキスト変数として定義する場合は、配列内のストレージ全体を使用myArray.length = 0;
します。delete
大規模なコレクションを扱っている場合は、Array.prototype.push();
メソッドを使用するよりも直接代入の方が高速です。jsPerf.com のテスト ケースmyArray[i] = 0;
よりも高速です。myArray.push(0);
配列を反復処理するのにかかる時間は、配列の長さを参照する方法や使用するインターネット ブラウザーによって大きく変わる可能性があります。
// Option 1
for (var i = 0; i < someArray.length; i++) {
// do something;
};
// Option 2
var l = myArray.length;
for(var i = 0; i < l; i++) {
// do something
};
// Option 3
for (var i = 0, ii = someArray.length; i < ii; i++) {
// do something;
};
上記のテストケースはこちらから入手できます。
2015 年 6 月 6 日現在、相対速度は次のとおりです。
+--------+------------+---------------+----------------------+
| Option | Firefox | Google Chrome | Internet Explorer 11 |
+--------+------------+---------------+----------------------+
| 1 | Fastest | 0.35% Slower | 46% Slower |
| 2 | 21% Slower | 0.15% Slower | 0.09% Slower |
| 3 | 21% Slower | Fastest | Fastest |
+--------+------------+---------------+----------------------+
配列を定義するとき、特に遅延初期化を行っている場合は、長さを指定する意味はまったくありません。
// Doing this is pointless in JS. It will result in an array with 100 undefined values.
var a = new Array(100);
// Not even this is the best way.
var a = new Array();
// Using the array literal is the fastest and easiest way to do things.
var a = [];
配列定義のテスト ケースは、こちらから入手できます。