Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Is String Set be faster than many equal?
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6.1 Safari/605.1.15
Browser:
Safari 15
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
2 years ago
Test name
Executions per second
Without Set
6.9 Ops/sec
With Set
1268.0 Ops/sec
Script Preparation code:
var fullList = new Array(9000).fill(0).map((e,i)=>`${i}::${crypto.randomUUID()}`); var k01 = new Array(9000).fill(0).map((e,i)=>Math.random()>0.5); var k02 = new Array(9000).fill(0).map((e,i)=>Math.random()>0.5); var s01 = fullList.map((e,i)=>k01[i]?e:null).filter(e=>e); var s02 = fullList.map((e,i)=>k02[i]?e:null).filter(e=>e); var f01 = new Function('key', s01.map(e=>`if(key==='${e}')return true;`).join('\n')+'return false;'); var f02 = new Function('key','s', `if(s.has(key))return true;`+'return false;'); var st = new Set(s01); var test01 = function(){ const main = s01; const loop = s02; let result = 0; let ui = 0; for(let s of loop){ ui++; if(f01(s))continue; result += ui; } return result; } var test02 = function(){ const main = s01; const loop = s02; let result = 0; let ui = 0; for(let s of loop){ ui++; if(f02(s, st))continue; result += ui; } return result; } console.log('test01',test01()); console.log('test02',test02());
Tests:
Without Set
test01();
With Set
test02();