Array.indexOf vs For loop (v36)

Revision 36 of this benchmark created on


Setup

var array1 = 
  [
  "v99",
  "v98",
  "v97",
  "v96",
  "v95",
  "v94",
  "v93",
  "v92",
  "v91",
  "v90",
  "v89",
  "v88",
  "v87",
  "v86",
  "v85",
  "v84",
  "v83",
  "v82",
  "v81",
  "v80",
  "v79",
  "v78",
  "v77",
  "v76",
  "v75",
  "v74",
  "v73",
  "v72",
  "v71",
  "v70",
  "v69",
  "v68",
  "v67",
  "v66",
  "v65",
  "v64",
  "v63",
  "v62",
  "v61",
  "v120",
  "v119",
  "v118",
  "v117",
  "v116",
  "v115",
  "v114",
  "v113",
  "v112",
  "v111",
  "v110",
  "v109",
  "v108",
  "v107",
  "v106",
  "v105",
  "v104",
  "v103",
  "v102",
  "v101",
  "v100",
  "v1",
  "v2",
  "v3",
  "v4",
  "v5",
  "v6",
  "v7",
  "v8",
  "v9",
  "v10",
  "v11",
  "v12",
  "v13",
  "v14",
  "v15",
  "v16",
  "v17",
  "v18",
  "v19",
  "v20",
  "v21",
  "v22",
  "v23",
  "v24",
  "v25",
  "v26",
  "v27",
  "v28",
  "v29",
  "v30",
  "v31",
  "v32",
  "v33",
  "v34",
  "v35",
  "v36",
  "v37",
  "v38",
  "v39",
  "v40",
  "v41",
  "v42",
  "v43",
  "v44",
  "v45",
  "v46",
  "v47",
  "v48",
  "v49",
  "v50",
  "v51",
  "v52",
  "v53",
  "v54",
  "v55",
  "v56",
  "v57",
  "v58",
  "v59",
  "v60",
  
    "value1",
    "value2",
    "value3",
    "value4",
    "value5",
    "value6",
    "value7",
    "value8",
    "value9",
    "value10",
    "value11",
    "value12",
    "value13",
    "value14",
    "value15",
    "value16",
    "value17",
    "value18",
    "value19",
    "value20"
  ];
  var array2 =
  [
  "v61",
  "v62",
  "v63",
  "v64",
  "v65",
  "v66",
  "v67",
  "v68",
  "v69",
  "v70",
  "v71",
  "v72",
  "v73",
  "v74",
  "v75",
  "v76",
  "v77",
  "v78",
  "v79",
  "v80",
  "v81",
  "v82",
  "v83",
  "v84",
  "v85",
  "v86",
  "v87",
  "v88",
  "v89",
  "v90",
  "v91",
  "v92",
  "v93",
  "v94",
  "v95",
  "v96",
  "v97",
  "v98",
  "v99",
  "v100",
  "v101",
  "v102",
  "v103",
  "v104",
  "v105",
  "v106",
  "v107",
  "v108",
  "v109",
  "v110",
  "v111",
  "v112",
  "v113",
  "v114",
  "v115",
  "v116",
  "v117",
  "v118",
  "v119",
  "v120",
  
  "v1",
  "v2",
  "v3",
  "v4",
  "v5",
  "v6",
  "v7",
  "v8",
  "v9",
  "v10",
  "v11",
  "v12",
  "v13",
  "v14",
  "v15",
  "v16",
  "v17",
  "v18",
  "v19",
  "v20",
  "v21",
  "v22",
  "v23",
  "v24",
  "v25",
  "v26",
  "v27",
  "v28",
  "v29",
  "v30",
  "v31",
  "v32",
  "v33",
  "v34",
  "v35",
  "v36",
  "v37",
  "v38",
  "v39",
  "v40",
  "v41",
  "v42",
  "v43",
  "v44",
  "v45",
  "v46",
  "v47",
  "v48",
  "v49",
  "v50",
  "v51",
  "v52",
  "v53",
  "v54",
  "v55",
  "v56",
  "v57",
  "v58",
  "v59",
  "v60",
    "value1",
    "value10",
    "value20"
  ];

Test runner

Ready to run.

Testing in
TestOps/sec
new3
for(var i = 0, len = array2.length; i < len; i++) {
  var result = array1.indexOf(array2[i]) >= 0;
}
ready
new1
for(var i = 0, len = array1.length; i < len; i++) {
  var result = array2.indexOf(array1[i]) >= 0;
}
ready
For loop (fair benchmark)
for(var i = 0, len = array1.length; i < len; i++)
{
  var value = array1[i];

  for(var j = 0, len = array2.length; j < len; j++) 
  {
    var result = value === array2[j]; 
    if (result) {
       break;
    }
  }
}
ready
For loop
for(var i = 0, len = array1.length; i < len; i++)
{
  var value = array1[i];
  var result = false;

  for(var j = 0, len = array2.length; j < len; j++)
  {
    if(value === array2[j])
    {
       result = true;
       break;
    }
  }
}
ready
new0
for(var i = 0, len = array1.length; i < len; i++) {
  var result = array2.indexOf(array1[i]) !== -1;
}
ready
new2
for(var i = 0, len = array2.length; i < len; i++) {
  var result = array1.indexOf(array2[i]) !== -1;
}
ready
Array.indexOf()
for(var i = 0, len = array1.length; i < len; i++)
{
  var value = array1[i];
  var result = (array2.indexOf(value) !== -1);
}
ready
For loop without break
for(var i = 0, len = array1.length; i < len; i++)
{
  var value = array1[i];
  var result = false;

  for(var j = 0, len = array2.length; j < len; j++)
  {
    if(value === array2[j])
    {
       result = true;
    }
  }
}
ready
includes
function includes(arr, value) {
  var result = false;
  for(var j = 0, len = arr.length; j < len; j++)
  {
    if(value === arr[j])
    {
       result = true;
       break;
    }
  }
  return result;
}

for(var i = 0, len = array1.length; i < len; i++)
{
    includes(array2, array1[i])
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.