Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
collectExpandedIdsFromDataSource
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/126.0.0.0 Safari/537.36
Browser:
Chrome 126
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
collectExpandedIdsFromDataSource loop
8424.2 Ops/sec
collectExpandedIdsFromDataSource flatMap
4569.1 Ops/sec
collectExpandedIdsFromDataSource generator
4240.6 Ops/sec
Script Preparation code:
var dataSource = [...Array(100)].map(() => ({ _id: crypto.randomUUID(), children: [...Array(10)].map(() => ({ _id: crypto.randomUUID(), children: [...Array(10)].map(() => ({ _id: crypto.randomUUID(), children: [], })) })) })); var collectExpandedIdsFromDataSource1 = ( dataSource, searchPhrase, ) => { const ids = []; if (!searchPhrase) return ids; const getRowIds = (row) => { if (row._id && row.children?.length) ids.push(row._id); for (const child of row.children ?? []) getRowIds(child); }; for (const row of dataSource) getRowIds(row); return ids; }; var collectExpandedIdsFromDataSource2 = (dataSource, searchPhrase) => { if (!searchPhrase) return []; return dataSource.flatMap(row => { return row.children?.length ? (row._id ? [row._id, ...collectExpandedIdsFromDataSource2(row.children, searchPhrase)] : collectExpandedIdsFromDataSource2(row.children, searchPhrase)) : [] }) }; function* collectExpandedIdsFromDataSource3(dataSource, searchPhrase) { if (!searchPhrase) return; for (const row of dataSource) { if (row.children?.length) { if (row._id) yield row._id; yield* collectExpandedIdsFromDataSource3(row.children, searchPhrase); } }; };
Tests:
collectExpandedIdsFromDataSource loop
collectExpandedIdsFromDataSource1(dataSource, 'aaa')
collectExpandedIdsFromDataSource flatMap
collectExpandedIdsFromDataSource2(dataSource, 'aaa')
collectExpandedIdsFromDataSource generator
[...collectExpandedIdsFromDataSource3(dataSource, 'aaa')]