Script Preparation code:
x
 
function shuffleArray(array) {
    for (let i = array.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [array[i], array[j]] = [array[j], array[i]];
    }
}
var ids = [];
var uuids = [];
var entities = {};
var itemIdByUuid = {};
for(let i = 0; i < 5000; i++) {
  const obj = {
    id: `id${i}`,
    uuid: crypto.randomUUID(),
    foo: "bar",
    bar: "foo",
  };
  
  entities[obj.id] = obj;
  ids.push(obj.id);
  itemIdByUuid[obj.uuid] = obj.id;
}
Tests:
  • finding item using find with Object.values

     
    const randomUUID = uuids[Math.floor(Math.random() * uuids.length)];
    const itemMatchingSomeUUID = Object.values(entities).find((obj) => obj.uuid === randomUUID);
  • finding item using find without Object.values (accessing entities using the ids array)

     
    const randomUUID = uuids[Math.floor(Math.random() * uuids.length)];
    const itemMatchingSomeUUID = ids.map((id) => entities[id]).find((obj) => obj.uuid === randomUUID);
  • using the itemIdByUuid "projection" we created

     
    const randomUUID = uuids[Math.floor(Math.random() * uuids.length)];
    const itemMatchingSomeUUID = entities[itemIdByUuid[randomUUID]];
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    finding item using find with Object.values
    finding item using find without Object.values (accessing entities using the ids array)
    using the itemIdByUuid "projection" we created

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one year ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Chrome 123 on Windows
View result in a separate tab
Test name Executions per second
finding item using find with Object.values 768.4 Ops/sec
finding item using find without Object.values (accessing entities using the ids array) 1698.4 Ops/sec
using the itemIdByUuid "projection" we created 2131273.5 Ops/sec