Script Preparation code:
AخA
 
var data = new Array(15000);
data = data.fill({ id: 0 }).map((el, idx) => el.id = idx);
var mapData = new Map(data.map(obj => [obj.id, obj]))
var setData = new Set(data)
var recId = Math.floor(Math.random() * 15000);
var findInSet = (obj, testFn) => { 
    for (var item of obj) if(testFn(item)) return item;
}
var matchFn = (obj) => obj.id === recId
Tests:
  • Arr - findIndex

     
    var index = data.findIndex((num) => num === recId);
  • Arr - indexOf

     
    var index = data.indexOf(recId);
  • Arr - filter

     
    var index = data.filter((obj) => obj.id === recId);
  • Arr - find

     
    var index = data.find((obj) => obj.id === recId);
  • Map - get

     
    var index = mapData.get(recId);
  • Set - has

     
    var index = setData.has(data[recId]);
  • Set - findInSet

     
    var index = findInSet(setData, matchFn);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Arr - findIndex
    Arr - indexOf
    Arr - filter
    Arr - find
    Map - get
    Set - has
    Set - findInSet

    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_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
Chrome 111 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
Arr - findIndex 1582.8 Ops/sec
Arr - indexOf 1243520.0 Ops/sec
Arr - filter 488.9 Ops/sec
Arr - find 487.9 Ops/sec
Map - get 4078419.8 Ops/sec
Set - has 2808695.0 Ops/sec
Set - findInSet 578.3 Ops/sec