Script Preparation code:
x
 
function setup() {
  const randInt = (min, max) =>
      Math.floor(Math.random() * (max - min + 1) + min);
  const itemMap = {};
  const itemArr = [];
  for (let i = 0; i < 10000; i++) {
      const item = {
          id: randInt(0, 1000000),
          value: `value-${randInt(0, 1000000)}`
      };
      itemArr.push(item);
      itemMap[item.id] = item;
  }
  const itemIdsToGet = [itemArr[8002].id, itemArr[2423].id, itemArr[5322].id, itemArr[3].id, itemArr[7242].id]
  
  return {
    itemIdsToGet,
    itemMap,
    itemArr
  }
}
Tests:
  • Item map and enumerating values

     
    const values = setup();
    for  (const itemIdToUpdate of values.itemIdsToGet) {
      values.itemMap[itemIdToUpdate].value = 'updated'
      
      console.log(Object.values(values.itemMap));
    }
  • item array

     
    const values = setup();
    for  (const itemIdToUpdate of values.itemIdsToGet) {
      const index = values.itemArr.findIndex(x => x.id === itemIdToUpdate);
      
      values.itemArr[index].value = 'updated';
      
      console.log(values.itemArr);
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Item map and enumerating values
    item array

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 2 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36
Chrome 101 on Mac OS X 10.14.6
View result in a separate tab
Test name Executions per second
Item map and enumerating values 16.3 Ops/sec
item array 21.6 Ops/sec