Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Set.has vs Array.includes
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Browser:
Chrome 130
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Array.includes - small
795712.4 Ops/sec
Set.has - small
5627109.0 Ops/sec
Array.includes - large
220691.3 Ops/sec
Set.has - large
5623946.0 Ops/sec
Script Preparation code:
function range(s, e) { const xs = []; for (let i=s; i<e; i++) xs.push(i); return xs; } const pow = y => x => Math.pow(y, x); const p10 = pow(10); // [10, 100, ..., 1_000_000] const xss = range(1, 7) .map(i => range(0, p10(i))); const sxss = xss .map(xs => new Set(xs)); var yss = range(1, 7) .map(i => range(1, 9) .map(j => j * p10(i)) ); var smallXss = xss.slice(0, 3); var largeXss = xss.slice(3); var smallSxss = sxss.slice(0, 3); var largeSxss = sxss.slice(3);
Tests:
Array.includes - small
const xss = smallXss; const n = xss.length; const n2 = yss[0].length; for (let i = 0; i < n; i++) { const xs = xss[i]; const ys = yss[i]; for (let j = 0; j < n2; j++) { xs.includes(ys[j]); } }
Set.has - small
const xss = smallSxss; const n = xss.length; const n2 = yss[0].length; for (let i = 0; i < n; i++) { const xs = xss[i]; const ys = yss[i]; for (let j = 0; j < n2; j++) { xs.has(ys[j]); } }
Array.includes - large
const xss = largeXss; const n = xss.length; const n2 = yss[0].length; for (let i = 0; i < n; i++) { const xs = xss[i]; const ys = yss[i]; for (let j = 0; j < n2; j++) { xs.includes(ys[j]); } }
Set.has - large
const xss = largeSxss; const n = xss.length; const n2 = yss[0].length; for (let i = 0; i < n; i++) { const xs = xss[i]; const ys = yss[i]; for (let j = 0; j < n2; j++) { xs.has(ys[j]); } }