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:
  • lodash xor

     
    const res = _.xor(a, b)
  • with Sets

     
     var as = new Set(a)
     var bs = new Set(b)
     const res = a
        .filter((row_id) => bs.has(row_id))
        .concat(b.filter((row_id) => !as.has(row_id)))
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    lodash xor
    with Sets

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 2 days ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Chrome 135 on Windows
View result in a separate tab
Test name Executions per second
lodash xor 3463.2 Ops/sec
with Sets 7327.9 Ops/sec