私はループ最適化(N.Zakas、Javascript Optimization)について読んでいます。そこで、arrays
にinverse loop
を使用すると、ダイレクトループよりも最適化されていると書かれています。私は予想外の結果を持って、チェック条件+(1式で)
を変数i
を増加させるが - チェック条件
- - 変数増加i
ループ最適化の変更方向
for(i = length;i--;)
for(var i = 0; i < length; i++){...}
:完全に論理的なようですChromeの場合
var len = 100000000,
arr = new Array(len),
i = len - 1,
start = new Date(),
end;
for(i = 0; i < len; i++){
arr[i] = 1;
}
end = new Date();
console.log(end - start);
直接ループのリターン結果に近い4500msが、逆ループ... 9500ms!
なぜですか?
"より最適化され、直接ループです。" ---それはほとんど意味がありません。 – zerkms
N. Zakasは、アンローリングループとDuffs Deviceという技術(https://en.wikipedia.org/wiki/Duff%27s_device)について話していました。 'for'ループではなく' while'ループを使います。 – colecmc
ok、パフォーマンスの範囲を良くしてみよう –