0

私は JavaScript でプロジェクトを行っていますが、いくつか明確にする必要があります。システムが隠れてプログラマーのためにそれを行うので、javascriptでのメモリ管理はそれほど重要ではないことを読んだことがありますが、より良い最適化のために「もの」をキャッシュするのが良い場合があることも読みました。非常に明確な。たとえば、for ループで計算を行う場合は、ローカル var を作成して結果を格納する方がよいため、ループを通過するときに同じ計算を何度も計算する必要はありません。私の質問は、json オブジェクトを作成することです。次に、そのプロパティを呼び出したいのですが、Car.color のようにオブジェクトを介して呼び出すか、アクセスしたいときにローカル変数に保存するか、または同様のものに保存しても問題ありません。オブジェクト=ヒープ、

もう一つの例:

   var map = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];

            if (r >= 0) {
                var num = map[r][k];
                if(num === 0)
                {
                    return false;
                }
            }

num var は何かを変更しますか (良くも悪くも)。

4

1 に答える 1

2

オブジェクトの奥深くにあるものへの参照を格納することは、実際にはメモリとは何の関係もありません。これは、何度も何度も調べなくても済むようにするためです。

値を変数に格納することは、インターネット上のページをブックマークするようなものです。将来の参照用に用意されています。ブックマークしていない場合は、どうやってそこにたどり着いたのかを理解し、その手順を何度も繰り返す必要があります。ブックマークは高速ですが、手順を再作成するのは低速です。

しかし、素晴らしいニュースは、現代のブラウザーに関するものです。何かへの参照を保持することは、コードが高速になることを意味しません。場合によっては遅くなります!それはすべて、ブラウザ、検索しているオブジェクトのタイプ、およびコードの実行内容によって異なります。

  • DOM ルックアップのメリット
  • 小さな配列/オブジェクトへの参照であり、それほど多くはありません。

ほとんどの場合、アプリケーションで大きなパフォーマンスのボトルネックが発生していない限り、あまり気にする必要はありません。ここで、ブラウザのプロファイル タブを見て、コードの実行に時間がかかっている場所を確認します。

于 2012-10-24T21:06:10.993 に答える