HTML Preparation code:
AخA
 
1
<script src="https://cdnjs.cloudflare.com/ajax/libs/nanoid/4.0.1/index.browser.js" integrity="sha512-YFaQHp+hWX9CMeIMngYK23kSIWaYlgsswmzmIdEw/HcK/5NLhXY2MbT0wQB5DnUzjW1uky4quIHtksukqZGkMw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
Script Preparation code:
x
 
const SET_SIZE = 3000;
var set1 = new Set()
var set2 = new Set()
while (i < SET_SIZE) {
    const nid = 'key:'+Math.random();
    set1.add(nid);
    if (i % 2 == 0) set2.add(nid);
    i++;
}
while (i < SET_SIZE / 2) {
    set2.add('key:'+Math.random());
}
Tests:
  • Spreading

     
    const set3 = new Set([...set1, ...set2]);
    console.log(set3.size)
  • Set.forEach + Set.add

     
    const set3 = new Set(set1);
    set2.forEach(el => set3.add(el));
    console.log(set3.size)
  • Generators

     
    const set3 = new Set(function*() { yield* set1; yield* set2; }());
    console.log(set3.size)
  • for loop

     
    const set3 = new Set(set1);
    for(let el of set2) set3.add(el)
    console.log(set3.size)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Spreading
    Set.forEach + Set.add
    Generators
    for loop

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 months ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Chrome 131 on Windows
View result in a separate tab
Test name Executions per second
Spreading 332243.1 Ops/sec
Set.forEach + Set.add 339959.1 Ops/sec
Generators 283566.5 Ops/sec
for loop 325586.7 Ops/sec