exec arr of funcs (closure) (v2)

Revision 2 of this 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 farr4 = [];
for (let i = 0; i< arr.length - 1; i++) {
  farr4[i] = (n) => n + i;
} 
farr4.push((n) => n + len - 1);


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

const curr = arr.reduce((f, e, i) => {
  if (i === 0) {
    return (n) => n + e 
  }
  return (n) => f(n) + e
}, 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.