私が持っているfunction
入れ子になっていことをfor loop
。function
より多くのデータを繰り返すにつれて、速度が低下し始めています。この関数を少し速く実行するように最適化するにはどうすればよいですか?
function rubicoGVB(arr, range) {
var res = [];
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if ((arr[i] + arr[j]) / range < 16487665) {
res.push(arr[i]);
}
}
}
return res.length;
}
(あなたが行うことができる最大の改善は、このコメントのFast Snailによって説明されています:res
長さを返すためだけに配列は必要ありません。単にカウンターを使用してください。以下はあなたが行うことができる他の改善です。)
これらのループを見ると、次のこと以外にできることはほとんどありません。
配列の長さをキャッシュし、
ループ内でarr[i]
繰り返し検索する代わりにキャッシュするj
...参照して、最小限の(本当の)改善点であるlen
とentry
以下:
function rubicoGVB(arr, range) {
var res = [];
var len = arr.length;
var entry;
for (var i = 0; i < len; i++) {
entry = arr[i];
for (var j = i + 1; j < len; j++) {
if ((entry + arr[j]) / range < 16487665) {
res.push(entry);
}
}
}
return res.length;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加