Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
filter-map-reduce
(version: 0)
Comparing performance of:
map-filter vs reduce
Created:
2 years ago
by:
Guest
Jump to the latest result
Script Preparation code:
var testSubNav = [{ "id": "id1", "text": "All", "action": { "serviceToken": "token1", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id2", "text": "By Amazon", "action": { "serviceToken": "token2", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id3", "text": "News", "action": { "serviceToken": "token3", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id4", "text": "Sports", "action": { "serviceToken": "token4", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id5", "text": "TV shows", "action": { "serviceToken": "token5", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id6", "text": "Movies", "action": { "serviceToken": "token6", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id7", "text": "Entertainment", "action": { "serviceToken": "token7", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id8", "text": "Crime", "action": { "serviceToken": "token8", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id9", "text": "Reality", "action": { "serviceToken": "token9", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id10", "text": "Family", "action": { "serviceToken": "token10", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id11", "text": "Comedy", "action": { "serviceToken": "token11", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id12", "text": "Action", "action": { "serviceToken": "token12", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id13", "text": "Game shows", "action": { "serviceToken": "token13", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id14", "text": "Sci-Fi", "action": { "serviceToken": "token14", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id15", "text": "Food", "action": { "serviceToken": "token15", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id16", "text": "DIY", "action": { "serviceToken": "token16", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id17", "text": "Classic TV", "action": { "serviceToken": "token18", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id18", "text": "Nature & Explore", "action": { "serviceToken": "token18", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id19", "text": "Music", "action": { "serviceToken": "token19", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id20", "text": "Spanish", "action": { "serviceToken": "token20", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id21", "text": "Other", "action": { "serviceToken": "token21", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false }, { "id": "id22", "text": "Subscribe", "action": { "serviceToken": "token22", "text": null, "pageType": "home", "pageId": "live", "analytics": { "refMarker": "refMarker" }, "refMarker": "refMarker", "target": "live" }, "isSelected": false } ] function isNotNull(value) { return value !== null; } function parsePageSubNav(subNav) { const subNavItems = subNav .map(({ id, text, action, isSelected }) => { if (!id || !text) { return null; } return { id, text, action, isSelected }; }) .filter(isNotNull); // If there are more than MAX_SUB_NAV_ITEMS subnav items scheduled, then they are all dropped // This is preferred to only keeping the first MAX_SUB_NAV_ITEMS const filteredSubNavItems = subNavItems; if (!filteredSubNavItems.length) { return { items: [] }; } let selectedItemIndex = filteredSubNavItems.findIndex(item => item.isSelected); selectedItemIndex = selectedItemIndex === -1 ? 0 : selectedItemIndex; return { items: filteredSubNavItems.map(i => ({id: i.id, text: i.text, action: i.action})), selectedItemIndex }; }; function parseSubNav(subNav) { let skippedItems = 0; let selectedItemIndex = 0; const items = subNav.reduce((acc, subNavItem, index) => { const { id, text, action, isSelected } = subNavItem; if (!id || !text) { skippedItems += 1; } else { acc.push({ id, text, action }); if (isSelected) { selectedItemIndex = index - skippedItems; } } return acc; }, []); if (!items.length) { return { items: [] }; } return { items, selectedItemIndex }; };
Tests:
map-filter
parsePageSubNav(testSubNav)
reduce
parseSubNav(testSubNav)
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
map-filter
reduce
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
Based on the provided code and benchmark results, I can provide some observations and insights: **Code Analysis** The `parsePageSubNav` function takes an array of objects as input and returns another object with two properties: `items` and `selectedItemIndex`. The `items` property contains an array of filtered subnav items, while the `selectedItemIndex` property indicates which item is currently selected. The `isNotNull` function checks if a value is not null. The `parseSubNav` function takes an array of objects as input and returns another object with two properties: `items` and `selectedItemIndex`. The `items` property contains an array of filtered subnav items, while the `selectedItemIndex` property indicates which item is currently selected. **Benchmark Analysis** The benchmark results show that the `map-filter` approach takes approximately 2721241.75 executions per second on Chrome 112, running on a Mac OS X 10.15.7 device. In contrast, the `reduce` approach takes around 886286.0 executions per second. Based on these results, it appears that the `map-filter` approach is slightly faster than the `reduce` approach. **Conclusion** Without seeing the actual implementation of the `parseSubNav` and `parsePageSubNav` functions, it's difficult to provide a definitive answer about which approach is better. However, based on the benchmark results, it seems that the `map-filter` approach may be faster than the `reduce` approach. If you're interested in optimizing these functions further, I would suggest exploring other approaches or techniques, such as: 1. Using a more efficient data structure, like a Set or a Map. 2. Implementing early returns and reducing unnecessary computations. 3. Utilizing JavaScript's built-in `filter` and `map` methods for array operations. Feel free to ask if you have any further questions!
Related benchmarks:
kjnzjv
filter + map vs reduce
Filter and Map vs Reduce
dwfwsdfsdf
Reduce vs map with empty filter
Comments
Confirm delete:
Do you really want to delete benchmark?