Script Preparation code:
x
 
function generateTestArray() {
  const result = [];
  for (let i = 0; i < 1000000; ++i) {
    result.push({
      a: i,
      b: i / 2,
      r: 0,
    });
  }
  return result;
}
var array = generateTestArray();
Tests:
  • Array.forEach

     
    array.forEach((x) => {
            x.r = x.a + x.b;
          });
  • for of

     
      for (const obj of array) {
            obj.r = obj.a + obj.b;
          }
  • for <array.length, indexing

     
    for (let i = 0; i < array.length; ++i) {
            array[i].r = array[i].a + array[i].b;
          }
  • for <len, indexing

     
    const len = array.length;
          for (let i = 0; i < len; ++i) {
            array[i].r = array[i].a + array[i].b;
          }
  • for <array.length, tmp element

     
    for (let i = 0; i < array.length; ++i) {
            const x = array[i];
            x.r = x.a + x.b;
          }
  • for <len, tmp element

     
    const len = array.length;
          for (let i = 0; i < len; ++i) {
            const x = array[i];
            x.r = x.a + x.b;
          }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Array.forEach
    for of
    for <array.length, indexing
    for <len, indexing
    for <array.length, tmp element
    for <len, tmp element

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36
Chrome 91 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
Array.forEach 120.6 Ops/sec
for of 515.4 Ops/sec
for <array.length, indexing 6.7 Ops/sec
for <len, indexing 8.8 Ops/sec
for <array.length, tmp element 13.0 Ops/sec
for <len, tmp element 24.2 Ops/sec