Native Unique vs ember uniqBy

Benchmark created on


Setup

const repeat = (arr, n) => Array(n).fill(arr).flat();

const list = [1,2,3,4,5,6,7,9,10, ...repeat(11, 500)];

const identityFunction = (item) => item;
function uniqBy(
  array,
  keyOrFunc = identityFunction
) {

  let ret = [];
  let seen = new Set();
  let getter = typeof keyOrFunc === 'function' ? keyOrFunc : (item) => item[keyOrFunc];

  array.forEach((item) => {
    let val = getter(item);
    if (!seen.has(val)) {
      seen.add(val);
      ret.push(item);
    }
  });

  return ret;
}

Test runner

Ready to run.

Testing in
TestOps/sec
Set
const newArr = new Set(list);
ready
ember
const newArr = uniqBy(list);
ready

Revisions

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