-1

の間にパフォーマンスの点で違いはありますか

for(x=0;x<data.list.length;x++){
//...
}

var dList=data.list;

for(x=0;x<dList.length;x++){
//...
}

どうもありがとう

4

3 に答える 3

1

ほとんどの場合、心配する必要はありません。ベスト プラクティスは、次のようにします。

for(var x = 0, len = data.list.length; x < len; x++){
   //...
}

0 までカウントダウンすればさらに良いのですが、それは別の問題です。

于 2013-09-27T23:03:58.773 に答える
0

やるだけやってみよう。

最初のケース:

var start = new Date();
var data = {};
data.list = Array(100000);
for(x=0;x<data.list.length;x++){
    data.list[x] = Math.sqrt(Math.pow(x, 7));
}
var finish = new Date();
console.log(finish - start + "ms"); //245ms

2番目のケース:

var start = new Date();
var data = {};
data.list = Array(100000);
var dList = data.list
for(x=0;x<dList.length;x++){
    dList[x] = Math.sqrt(Math.pow(x, 7));
}
var finish = new Date();
console.log(finish - start + "ms"); //251ms

ただし、パフォーマンスを向上させる別の方法があります。

var start = new Date();
var data = {};
data.list = Array(100000);
for(x = data.list.length; x--; ){
    data.list[x] = Math.sqrt(Math.pow(x, 7));
}
var finish = new Date();
console.log(finish - start + "ms"); //199ms

x--減少する数を返し、ゼロに達するとブール値が false になるため、ループが停止します。ゼロとの比較は、他の数値との比較よりもはるかに高速に実行されるため、これはより高速に機能します。

于 2013-09-27T23:16:14.260 に答える
0

ここで実際に見られる唯一のパフォーマンスの向上は、長さの値を保存することです。これにより、比較のために反復ごとに data.list にアクセスする必要がなくなります。

int size = data.list.length;

for(x=0x<size;x++){
    //...
} 

他の人が述べたように、これは 99.99999% のケースでは非常に些細なことであり、名前空間が問題になると眉をひそめることさえあります。一般的な経験則は、読みやすいほど、おそらくより良い状態にあるということです。

于 2013-09-27T23:11:31.080 に答える