declarative vs imperative (v5)

Revision 5 of this benchmark created on


Setup

const randomNumbers = [...new Array(10000)].map(() => Math.ceil(Math.random() * 100));

Test runner

Ready to run.

Testing in
TestOps/sec
imperative
const filterImperatively = (numbers) => {
  const filtered = [];
  for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 === 0) {
      filtered.push(numbers[i]);
    }
  }
  return filtered;
};

filterImperatively(randomNumbers)
ready
declarative
const filterDeclaratively = (numbers) => {
  return numbers.filter(isEvenNumber);
};

const isEvenNumber = (number) => {
  return number % 2 === 0;
}

filterDeclaratively(randomNumbers);
ready
declarative one-line
const filterDeclaratively = (numbers) => numbers.filter(num => num % 2 === 0);

filterDeclaratively(randomNumbers);
ready
imperative for-of
const filterImperatively = (numbers) => {
  const filtered = [];
  for (const num of numbers) {
    if (num % 2 === 0) {
      filtered.push(num);
    }
  }
  return filtered;
};

filterImperatively(randomNumbers)
ready
foreach
const filterImperatively = (numbers) => {
  const filtered = [];
  numbers.forEach(num => {
    if (num % 2 === 0) {
      filtered.push(num);
    }
  });
  return filtered;
};

filterImperatively(randomNumbers)
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.