Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Benchmark: flatMap vs reduce vs foreach
Loops through every entities item and adds a prop.
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0
Browser:
Chrome 142
Operating system:
Windows
Device Platform:
Desktop
Date tested:
5 months ago
Test name
Executions per second
flatMap
60782.0 Ops/sec
reduce
12747.2 Ops/sec
foreach
219019.7 Ops/sec
for
109733.6 Ops/sec
Script Preparation code:
let e = () => ({ eProp: 'E' }); let t = () => ({ tProp: 'T', entities: [1,2,3].map(() => e()) }); let g = () => ({ gProp: 'B', tasks: [1,2,3,4,5,6,7,8,9].map(() => t()) }); let p = () => ({ pProp: 'A', groups: [1,2,3,4,5,6].map(() => g()) }); var arr = [p(), p(), p()];
Tests:
flatMap
arr.flatMap(p => p.groups.flatMap(g => g.tasks.flatMap(t => t.entities)));
reduce
arr.reduce((prev, curr) => [ ...prev, ...curr.groups.reduce((gPrev, gCurr) => [ ...gPrev, ...gCurr.tasks.reduce((tPrev, tCurr) => [ ...tPrev, ...tCurr.entities ], []) ], []) ],[]);
foreach
let result = [] arr.forEach((p) => { p.groups.forEach((g) => { g.tasks.forEach((t) => { t.entities.forEach((e, i) => { result.push(e); }) }) }); });
for
let result2 = []; for (let i= 0; i< arr.length; i++) { for (let j= 0;j < arr[i].groups.length; j++) { for (let k= 0; k< arr[i].groups[j].tasks.length; k++) { for (let l= 0; l< arr[i].groups[j].tasks[k].entities.length; l++) { result2.push(arr[i].groups[j].tasks[k].entities[l]); } } } }