【发布时间】:2017-11-11 22:12:45
【问题描述】:
我有一个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;
}
【问题讨论】:
-
如果你只想返回长度你不需要 res 数组
-
@reski:根据您在上面使用
let的方式,它要么没有任何区别,要么会减慢速度。它不会加快速度。 -
你能告诉我们更多关于函数应该计算什么,以及它的输入是什么样子的(例如
range总是一个正整数)吗?如果您的数据已排序,您可以显着加快计数速度 - 达到可能值得对其进行排序的程度 -
jsperf.com/array-range-count/1 创建了一个性能。
标签: javascript memory optimization