の間にパフォーマンスの点で違いはありますか
for(x=0;x<data.list.length;x++){
//...
}
対
var dList=data.list;
for(x=0;x<dList.length;x++){
//...
}
どうもありがとう
の間にパフォーマンスの点で違いはありますか
for(x=0;x<data.list.length;x++){
//...
}
対
var dList=data.list;
for(x=0;x<dList.length;x++){
//...
}
どうもありがとう
ほとんどの場合、心配する必要はありません。ベスト プラクティスは、次のようにします。
for(var x = 0, len = data.list.length; x < len; x++){
//...
}
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 になるため、ループが停止します。ゼロとの比較は、他の数値との比較よりもはるかに高速に実行されるため、これはより高速に機能します。
ここで実際に見られる唯一のパフォーマンスの向上は、長さの値を保存することです。これにより、比較のために反復ごとに data.list にアクセスする必要がなくなります。
int size = data.list.length;
for(x=0x<size;x++){
//...
}
他の人が述べたように、これは 99.99999% のケースでは非常に些細なことであり、名前空間が問題になると眉をひそめることさえあります。一般的な経験則は、読みやすいほど、おそらくより良い状態にあるということです。