array.filter.unique vs new set

JavaScript performance comparison

Revision 37 of this test case created by Toke Voltelen

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  let array = [];
  
  for (let i = 0; i < 10000000; i++) {
    array.push(Math.floor(Math.random() * 100));
  }
  
  

};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
reduce (Set)
[...array.reduce((s, item) => {
   s.add(item)
   return s
}, new Set())];
pending…
sort
[...array].sort().filter((item, i, arr) => i === 0 || arr[i-1] !== item)
pending…
reduce
Object.keys(array.reduce((result, item) => {
   result[item] = true;
   return result
}, {}));
pending…
Filter (no sort)
[...array].filter((item, i, arr) => i === 0 || arr.indexOf(item) !== i)
pending…
Lookup
const lookup = {};
array.filter((item) => {
   if (lookup[item]) { return false; } 
   lookup[item] = true;
   return true
})
pending…
new set
[...new Set(array)]
pending…

Revisions

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

0 Comments