Script Preparation code:
x
 
  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;
    i++;
    sum += arr[i]
   return sum_recurse(arr, i, sum);
  }
  
  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;
  }
Tests:
  • recursion

     
    sum_recurse(nums)
  • while loop

     
    sum_while(nums)
  • for loop

     
    sum_for(nums)
  • recurse (tail)

     
    sum_recurse_tail(nums)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    recursion
    while loop
    for loop
    recurse (tail)

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one year ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15
Safari 17 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
recursion 1539516.5 Ops/sec
while loop 10713835.0 Ops/sec
for loop 10727867.0 Ops/sec
recurse (tail) 1794756.6 Ops/sec