Run details:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36
Chrome 76
Windows
Desktop
5 years ago
Test name Executions per second
For loop, basic 3264.0 Ops/sec
While loop, basic 3147.3 Ops/sec
For loop, cached (inside for statement) 5092.2 Ops/sec
For loop, cached (outside for statement) 5373.7 Ops/sec
For loop, i-- (caching inside for loop) 5192.6 Ops/sec
For loop, i-- (caching outside for loop) 5287.7 Ops/sec
While loop, cached 5155.0 Ops/sec
While loop, i-- 5408.2 Ops/sec
Script Preparation code:
x
 
  var arr = [];
  for (var i = 0; i < 1000; i++) {
    arr[i] = i;
  }
  function someFn(ix) {
    return ix * 5 + 1 / 3 * 8;
  }
Tests:
  • For loop, basic

     
    for (var i = 0; i < arr.length; i++) {
      someFn(arr[i]);
    }
  • While loop, basic

     
    var i = 0;
    while (i < arr.length) {
      someFn(arr[i]);
      i++;
    }
  • For loop, cached (inside for statement)

     
    for (var i = 0, len = arr.length; i < len; i++) {
      someFn(arr[i]);
    }
  • For loop, cached (outside for statement)

     
    var len = arr.length;
    for (var i = 0; i < len; i++) {
      someFn(arr[i]);
    }
  • For loop, i-- (caching inside for loop)

     
    for (var i = arr.length; i > 0; i--) {
      someFn(arr[i]);
    }
  • For loop, i-- (caching outside for loop)

     
    var i = arr.length;
    for (; i--;) {
      someFn(arr[i]);
    }
  • While loop, cached

     
    var len = arr.length;
    var i = 0;
    while(i < len){
      someFn(arr[i]);
      i++;
    }
  • While loop, i--

     
    var i = arr.length;
    while(i--){
      someFn(arr[i]);
    }