dict vs map string count (v2)

Revision 2 of this benchmark created on


Setup

const availableStr = ["a", "b", "c"];
const strs = [...new Array(10).keys()].map(() => {
  const index = Math.floor(Math.random() * availableStr.length);
  return availableStr[index];
});

Test runner

Ready to run.

Testing in
TestOps/sec
dict (for)
const map = {};
for (const str of strs) {
  map[str] = (map[str] || 0) + 1;
}
ready
dict (reduce)
const map = strs.reduce((map, str) => {
  map[str] = (map[str] || 0) + 1;
  return map;
}, {});
ready
map (for)
const map = new Map();
for (const str of strs) {
  map.set(str, (map.get(str) ?? 0) + 1);
}
ready
map (reduce)
const map = strs.reduce((map, type) => {
  map.set(type, (map.get(type) ?? 0) + 1);
  return map;
}, new Map());
ready
dict (reduce) 2
const map = strs.reduce((map, str) => {
  const value = map[str];
  if (value) {
    map[str] = value + 1;
  } else {
  	map[str] = 1;
  }
  return map;
}, {});
ready
dict (reduce) 3
const map = strs.reduce((map, str) => {
  const value = map[str];
  map[str] = value ? value + 1 : 1
  return map;
}, {});
ready
dict (reduce) 4
const map = strs.reduce((map, str) => {
  if (str in map) {
    map[str] += 1;
  } else {
  	map[str] = 1;
  }
  return map;
}, {});
ready
dict (reduce) 5
const map = strs.reduce((map, str) => {
  map[str] = map[str] ? map[str] + 1 : 1
  return map;
}, {});
ready

Revisions

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