Reducing iterations

Benchmark created on


Setup

var req1 = {
  data: []
}
for (let i of Array(1000).keys()) {
  req1.data.push({ id: i })
}
var req2 = {
  data: []
}
for (let i of Array(1000).keys()) {
  req2.data.push({ id: i })
}
var responses = [req1, req2]

Test runner

Ready to run.

Testing in
TestOps/sec
Current method
var data = responses.reduce((result, current) => [...result, ...current.data],
  [],
);
var dbNodes = {};
Object.values(data).forEach((dbNode) => {
  dbNodes[dbNode.id] = { ...dbNode };
});
ready
Consolidated methods
var newData2 = responses.reduce((acc, resp) => {
  var respData = resp.data.reduce((acc2, curr) => {
    acc2[curr.id] = curr
    return curr
  }, {})
  acc = { ...acc, ...respData}
}, {})
ready
Old school for loops
var dbNodesFor = {}
var node
for (let i = 0, len = responses.length; i < len; i++) {
  var { data } = responses[i]
  for (let j = 0, jLen = data.length; j < jLen; j++) {
    node = data[j]
    dbNodesFor[node.id] = node
  }
}
ready

Revisions

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