exec arr of funcs (closure) (v5)

Revision 5 of this benchmark created on


Setup

const len = 10;

const arr = [...Array(len).keys()];
const factory = (i) => (n) => n + i;

const farr1 = arr.map(i => factory(i));

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

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

const farr4 = [];
for (let i = 0; i< arr.length - 1; i++) {
  farr4[i] = factory(i);
} 
farr4.push(factory(len - 1));


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

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

Test runner

Ready to run.

Testing in
TestOps/sec
map
exec(farr1);
ready
map + push
exec(farr2);
ready
for
exec(farr3);
ready
for + push
exec(farr4);
ready
recursion
curr(0);
ready

Revisions

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