Script Preparation code:
x
 
var arr = [];
var max = -Infinity;
for (i = 0; i < 4096; i++) { 
  arr.push(Math.random() * i);
}
function mathMax (array) {
    return Math.max.apply(Math, array);
}
function forLoop (array) {
    for (let i = 0, len = arr.length; i < len; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
}
Tests:
  • Math.max.apply

     
    max = Math.max.apply(Math, arr);
  • Math.max with spread

     
    max = Math.max(...arr);
  • basic for loop

     
    for (let i = 0; i < arr.length; i++) {
      if (arr[i] > max) {
        max = arr[i];
      }
    }
  • for loop length caching

     
    for (let i = 0, len = arr.length; i < len; i++) {
      if (arr[i] > max) {
        max = arr[i];
      }
    }
  • for loop reverse

     
    for (let i = arr.length - 1; i >= 0; i--) {
      if (arr[i] > max) {
        max = arr[i];
      }
    }
  • for-of loop

     
    for (const value of arr) {
      if (value > max) {
        max = value;
      }
    }
  • Math.max.apply extracted into separate function

     
    max = mathMax(arr)
  • for loop length caching extracted into separate function

     
    max = forLoop(arr)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Math.max.apply
    Math.max with spread
    basic for loop
    for loop length caching
    for loop reverse
    for-of loop
    Math.max.apply extracted into separate function
    for loop length caching extracted into separate function

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 5 months ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Chrome 130 on Windows
View result in a separate tab
Test name Executions per second
Math.max.apply 246742.0 Ops/sec
Math.max with spread 52866.6 Ops/sec
basic for loop 1674.5 Ops/sec
for loop length caching 2496.5 Ops/sec
for loop reverse 2499.1 Ops/sec
for-of loop 4625.6 Ops/sec
Math.max.apply extracted into separate function 269100.9 Ops/sec
for loop length caching extracted into separate function 2324.1 Ops/sec