Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Test map efficiency
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Browser:
Chrome 131
Operating system:
Linux
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Foreach test
475833.9 Ops/sec
Map
183514.7 Ops/sec
HTML Preparation code:
<!--your preparation HTML code goes here-->
Tests:
Foreach test
let items = [ {color: 'red', type: 'tv', age: 18}, {color: 'silver', type: 'phone', age: 20}, {color: 'blue', type: 'book', age: 17} ] const excludes = [ {k: 'color', v: 'silver'}, {k: 'type', v: 'tv'}, ] function excludeItems(items, excludes) { excludes.forEach( pair => { items = items.filter(item => item[pair.k] === item[pair.v]) }) return items } console.log(excludeItems(items, excludes))
Map
let items = [ {color: 'red', type: 'tv', age: 18}, {color: 'silver', type: 'phone', age: 20}, {color: 'blue', type: 'book', age: 17} ] const excludes = [ {k: 'color', v: 'silver'}, {k: 'type', v: 'tv'}, ] function excludeItems(items, excludes) { // m k n // n * m // change exclude to Map<key, Set<value>> // m * k * 1 // preprocess excludes array // avoid multiple for loop on items const excludeMap = new Map() for (let {k, v} of excludes) { if (!excludeMap.has(k)) { excludeMap.set(k, new Set()) } excludeMap.get(k).add(v) } return items.filter(item => { return Object.keys(item).every( key => !excludeMap.has(key) || !excludeMap.get(key).has(item[key]) ) }) } console.log(excludeItems(items, excludes))