array of funcs

Benchmark created on


Setup

const len = 10;

const arr = [...Array(len).keys()];

const farr1 = arr.map(i => (n) => n + i);

const farr2 = arr.slice(0, -1).map(i => (n) => n + i);
farr2.push((n) => n + len - 1);

const farr3 = [];
for (let i = 0; i< arr.length; i++) {
  farr3[i] = (n) => n + i;
}

const fc = (arr) => (n) => {
  let r = n;
  for (let i = 0; i < arr.length; i++) {
    r = arr[i](r);
  }
  return r;
}

const curr = arr.reduce((f, e, i) => {
  if (i === 0) {
    return (n) => n + e 
  }
  return (n) => f(n) + e
}, undefined);

const f1 = fc(farr1)
const f2 = fc(farr2);
const f3 = fc(farr3);

Test runner

Ready to run.

Testing in
TestOps/sec
map
for (let i = 0; i < arr.length; i++) {
  r = f1(i);
}
ready
map + push
for (let i = 0; i < arr.length; i++) {
	r = f2(i)
}
ready
for
for (let i = 0; i < arr.length; i++) {
	r = f3(i)
}
ready
recursion
for (let i = 0; i < arr.length; i++) {
	r = curr(i)
}
ready

Revisions

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