JS Performance Tests

by kurtgrung

JavaScript

// Define the size of the array & Generate an array with random numbers
const arraySize = 1000000;
const numbers = Array.from({ length: arraySize }, () => Math.random());

// for loop
function sumWithForLoop(array) {
  let sum = 0;
  for (let i = 0; i < array.length; i++) {
    sum += array[i];
  }
  return sum;
}

// forEach method
function sumWithForEach(array) {
  let sum = 0;
  array.forEach(num => {
    sum += num;
  });
  return sum;
}

// for...of loop
function sumWithForOfLoop(array) {
  let sum = 0;
  for (const num of array) {
    sum += num;
  }
  return sum;
}

// map method
function sumWithMap(array) {
  return array.map(num => num).reduce((acc, curr) => acc + curr, 0);
}

// filter method
function sumWithFilter(array) {
  return array.filter(num => num > 0.5).reduce((acc, curr) => acc + curr, 0);
}

// Run performance tests
function runTests() {
  console.log("Testing for loop (++)...");
  const startForLoop = performance.now();
  sumWithForLoop(numbers);
  const endForLoop = performance.now();
  console.log("Execution time for for loop:", endForLoop - startForLoop, "milliseconds");

  console.log("Testing forEach method (array.forEach())...");
  const startForEach = performance.now();
  sumWithForEach(numbers);
  const endForEach = performance.now();
  console.log("Execution time for forEach method:", endForEach - startForEach, "milliseconds");

  console.log("Testing for...of loop (for...of)...");
  const startForOfLoop = performance.now();
  sumWithForOfLoop(numbers);
  const endForOfLoop = performance.now();
  console.log("Execution time for for...of loop:", endForOfLoop - startForOfLoop, "milliseconds");

  console.log("Testing map method (array.map())...");
  const startMap = performance.now();
  sumWithMap(numbers);
  const endMap = performance.now();
  console.log("Execution time for map method:", endMap - startMap, "milliseconds");

  console.log("Testing filter method (array.filter())...");
  const startFilter = performance.now();
 ...