Script Preparation code:
x
 
function dec2hex (dec) {
  return dec < 10
    ? '0' + String(dec)
    : dec.toString(16)
}
function generateId (len) {
  var arr = new Uint8Array((len || 40) / 2)
  window.crypto.getRandomValues(arr)
  return Array.from(arr, dec2hex).join('')
}
var a = []
var b = []
for( let i = 0; i < 1000; i++)
{
  a[i] = generateId(16)
  b[i] = generateId(16)
}
Tests:
  • with Sets

     
    function diff(a, b) {
      const as = new Set(a);
      const bs = new Set(b);
      return Array.from(new Set([...as].filter(x => !bs.has(x))));
    }
  • with filter-includes

     
    const difference = a.filter(x => !b.includes(x));
  • lodash.difference

     
    _.difference(a, b)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    with Sets
    with filter-includes
    lodash.difference

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one year ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Chrome 120 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
with Sets 528247168.0 Ops/sec
with filter-includes 145.4 Ops/sec
lodash.difference 7627.5 Ops/sec