declarative vs imperative (v2)

Revision 2 of this benchmark created on


Test runner

Ready to run.

Testing in
TestOps/sec
imperative
var numbers = [1,2,3,4,5,6,7,8,9,10];

var filterImperatively = (numbers) => {
  let filtered = [];
  for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 === 0) {
      filtered.push(numbers[i]);
    }
  }
  return filtered;
};

filterImperatively(numbers)
ready
declarative
var numbers = [1,2,3,4,5,6,7,8,9,10];

var filterDeclaratively = (numbers) => {
  return numbers.filter(isEvenNumber);
};

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

filterDeclaratively(numbers);
ready
declarative one-line
const numbers = [1,2,3,4,5,6,7,8,9,10];

const filterDeclaratively = (numbers) => numbers.filter(num => num % 2 === 0);

filterDeclaratively(numbers);
ready
imperative bitwise
var numbers = [1,2,3,4,5,6,7,8,9,10];

const filterImperatively = (numbers) => {
  const filtered = [];
  const len = numbers.length;
  for (let i = 0; i < len; i++) {
    if ((numbers[i] & 1) === 0) { // Bitweise Operation für bessere Geschwindigkeit
      filtered.push(numbers[i]);
    }
  }
  return filtered;
};

filterImperatively(numbers)
ready
imperative bitwise for-of
var numbers = [1,2,3,4,5,6,7,8,9,10];

const filterImperatively = (numbers) => {
  const filtered = [];
  for (const num of numbers) {
    if ((num & 1) === 0) { // Bitweise Prüfung für gerade Zahlen
      filtered.push(num);
    }
  }
  return filtered;
};

filterImperatively(numbers)
ready

Revisions

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