Script Preparation code:
x
 
function getArray(length) {
  const result = [];
  for (let i = 0; i < length; i++) {
    result.push(i + 'abc'); // In case the browser does some sort of optimization for arrays with only integers ¯\_(ツ)_/¯
  }
  return result;
}
function getRandomTargetElement(arrayLength) {
  const index = Math.floor(Math.random() * arrayLength);
  return index + 'abc';
}
array_small = getArray(10000);
array_large = getArray(1000000);
set_small = new Set(array_small);
set_large = new Set(array_large);
Tests:
  • Array.includes, 10 000 elements

     
    array_small.includes(getRandomTargetElement(10000));
  • Array.includes, 1 000 000 elements

     
    array_large.includes(getRandomTargetElement(1000000))
  • Set.has, 10 000 elements

     
    set_small.has(getRandomTargetElement(10000))
  • Set.has, 1 000 000 elements

     
    set_large.has(getRandomTargetElement(1000000))
  • Array to Set + Set.has, 10 000 elements

     
    const target = getRandomTargetElement(10000);
    const set = new Set(array_small);
    set.has(target)
  • Array to Set + Set.has x 100, 10 000 elements

     
    const set = new Set(array_small);
    for (let i = 0; i < 100; i++) {
      const target = getRandomTargetElement(10000);
      set.has(target)
    }
  • Array.includes x 100, 10 000 elements

     
    for (let i = 0; i < 100; i++) {
      const target = getRandomTargetElement(10000);
      array_small.includes(target)
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Array.includes, 10 000 elements
    Array.includes, 1 000 000 elements
    Set.has, 10 000 elements
    Set.has, 1 000 000 elements
    Array to Set + Set.has, 10 000 elements
    Array to Set + Set.has x 100, 10 000 elements
    Array.includes x 100, 10 000 elements

    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/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Chrome 133 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
Array.includes, 10 000 elements 95126.7 Ops/sec
Array.includes, 1 000 000 elements 958.7 Ops/sec
Set.has, 10 000 elements 38336568.0 Ops/sec
Set.has, 1 000 000 elements 26425542.0 Ops/sec
Array to Set + Set.has, 10 000 elements 2759.9 Ops/sec
Array to Set + Set.has x 100, 10 000 elements 2739.9 Ops/sec
Array.includes x 100, 10 000 elements 966.3 Ops/sec