Script Preparation code:
x
 
function getRandomElement(id) {
  return {
    id,
    a: Math.random(),
    b: Math.random(),
    c: Math.random(),
  }
}
function getArray(length) {
  const result = [];
  for (let i = 0; i < length; i++) {
    result.push(getRandomElement(i))
  }
  
  return result;
}
function arrayToMap(array) {
  return new Map(array.map(el => [el.id, el]));
}
function getRandomInt(max) {
  return Math.floor(Math.random() * max);
}
array_small = getArray(10);
array_large = getArray(100);
map_small = arrayToMap(array_small);
map_large = arrayToMap(array_large);
Tests:
  • Array.find, 10 elements

     
    const target = getRandomInt(9999);
    array_small.find(el => el.id === target);
  • Map.get, 10 elements

     
    const target = getRandomInt(9999);
    map_small.get(target);
  • Array.find, 100 elements

     
    const target = getRandomInt(999999);
    array_large.find(el => el.id === target);
  • Map.get, 100 elements

     
    const target = getRandomInt(999999);
    map_large.get(target)
  • Array to Map + Map.get, 1 lookup

     
    const map = arrayToMap(array_small);
    const target = getRandomInt(9999);
    map.get(target);
  • Array to Map + Map.get, 10 lookups

     
    const map = arrayToMap(array_small);
    for (let i = 0; i < 10; i++) {
      const target = getRandomInt(9999);
      map.get(target);
    }
  • Array to Map + Map.get, 100 lookups

     
    const map = arrayToMap(array_small);
    for (let i = 0; i < 100; i++) {
      const target = getRandomInt(9999);
      map.get(target);
    }
  • Array.find, 10 lookups

     
    for (let i = 0; i < 10; i++) {
      const target = getRandomInt(9999);
      array_small.find(el => el.id === target)
    }
  • Array.find, 100 lookups

     
    for (let i = 0; i < 100; i++) {
      const target = getRandomInt(9999);
      array_small.find(el => el.id === target)
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Array.find, 10 elements
    Map.get, 10 elements
    Array.find, 100 elements
    Map.get, 100 elements
    Array to Map + Map.get, 1 lookup
    Array to Map + Map.get, 10 lookups
    Array to Map + Map.get, 100 lookups
    Array.find, 10 lookups
    Array.find, 100 lookups

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 12 days ago)
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Mobile Safari/537.36
Chrome Mobile 134 on Android
View result in a separate tab
Test name Executions per second
Array.find, 10 elements 55705348.0 Ops/sec
Map.get, 10 elements 111301880.0 Ops/sec
Array.find, 100 elements 10466441.0 Ops/sec
Map.get, 100 elements 106299496.0 Ops/sec
Array to Map + Map.get, 1 lookup 4338972.5 Ops/sec
Array to Map + Map.get, 10 lookups 3121109.2 Ops/sec
Array to Map + Map.get, 100 lookups 785736.2 Ops/sec
Array.find, 10 lookups 3831773.2 Ops/sec
Array.find, 100 lookups 416246.9 Ops/sec