Script Preparation code:
x
 
function generateRandomObjects(count) {
    const getRandomString = (length = 5) =>
        Math.random().toString(36).substring(2, 2 + length);
    return Array.from({
        length: count
    }, () => ({
        item: getRandomString(),
        descr: getRandomString(),
    }));
}
// Пример использования:
const randomObjects = generateRandomObjects(3000);
console.log(randomObjects);
Tests:
  • Set and ForOf

     
    const uniqItems = new Set();
    const items = [];
    for (const element of randomObjects) {
      const key =  `${element.item} - ${element.descr}`;
      if (!uniqItems.has(key)) {
        items.push(element);
        uniqItems.add(key);
      }
    }
  • Map

     
    const items = Array.from(
      new Map(
        randomObjects.map(i => [`${i.item} - ${i.descr}`, { item: i.item, descr: i.descr }])
      ).values()
    );
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Set and ForOf
    Map

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one month ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3 Safari/605.1.15
Safari 18 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
Set and ForOf 6114.2 Ops/sec
Map 4731.9 Ops/sec