Test name | Executions per second |
---|---|
recursion | 548839.1 Ops/sec |
while loop | 3232907.8 Ops/sec |
for loop | 3647159.5 Ops/sec |
recurse (tail) | 569380.4 Ops/sec |
var nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function sum_recurse(arr, i) {
i = i || 0;
if (i > arr.length)
return 0;
else
return arr[i] + sum_recurse(arr, i + 1);
}
function sum_recurse_tail(arr, i, sum = 0) {
i = i || 0;
if (i > arr.length)
return 0;
else
return sum_recurse(arr, i + 1, sum + arr[i]);
}
function sum_while(arr) {
var total = 0,
i = 0,
len = arr.length;
while (i < len) {
total += arr[i++];
}
return total;
}
function sum_for(arr) {
var total = 0,
len = arr.length;
for (var i = 0; i < len; i++) {
total += arr[i];
}
return total;
}
sum_recurse(nums)
sum_while(nums)
sum_for(nums)
sum_recurse_tail(nums)