2

forループを実行する前に、別の変数の長さで変数を宣言する方が効率的ですか、それともループ内で長さを計算する必要がありますか。

答えは、長さが計算されている配列の大きさに依存すると確信しています。私はいつも見る

for ( var i = 1; i <= theVar.length; i++ ) {

}

しかし、それから私はそれをすることはより少ない資源集約的であると言われました

var theVarLen = theVar.length

for ( var i = 1; i <= theVarLen; i++ ) {

}

反復ごとに長さの再計算を回避するためです。

それとも、特定の状況に依存しているので、明確な法令を制定することは不可能ですか?

または、それは本当に重要ではありません..?

本当にありがとう!

4

2 に答える 2

4

さて、調べてみましょう。ここで実行できるテストを作成しました:http://jsperf.com/loop-length-caching

ブラウザは、配列が作成されると(場合によっては変更されると)配列の長さを格納するように見えるため、長さを変数に格納することによる速度の大きなメリットはありません。唯一の実際の要因(この場合)は、オブジェクトのプロパティへのアクセスと変数へのアクセスの速度の違いです。

于 2012-08-06T00:06:32.547 に答える
1

間違いなく、内部で逆参照するためのポインターが1つ少なくなりますが、実際のコードで2番目の方法で実行されるのを見たことがありません。私はあなたが得るかもしれないどんなパフォーマンスも正当化するのに苦労するだろうと信じています。

于 2012-08-06T00:03:33.050 に答える