Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
_.filter + _.map vs array push in _.forEach vs _.reduce
(version: 4)
_.filter + _.map vs array push in _.forEach
Comparing performance of:
_.filter + _.map vs array push in _.forEach vs _.reduce
Created:
7 years ago
by:
Registered User
Jump to the latest result
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/clone/2.1.2/clone.min.js"></script>
Script Preparation code:
var objs = [ { "name": "test1", "characters": [ { "_id": "5b59a34561a2220011900b7e", "characterID": "5ab48ce869b013001d26f49b", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b7d", "characterID": "5ab48ce869b013001d26f49c", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b7c", "characterID": "5ab48ce869b013001d26f49d", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b7b", "characterID": "5ab48ce869b013001d26f4a7", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b7a", "characterID": "5ab48ce869b013001d26f4b0", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b79", "characterID": "5ab48ce869b013001d26f4b6", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b78", "characterID": "5ab48ce869b013001d26f4bf", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b77", "characterID": "5ab48ce869b013001d26f4c4", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b76", "characterID": "5ab48ce869b013001d26f4c9", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b75", "characterID": "5ab48ce869b013001d26f4d0", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b74", "characterID": "5ab48ce969b013001d26f4d8", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b73", "characterID": "5ab48ce969b013001d26f4d9", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b72", "characterID": "5ab48ce969b013001d26f4e2", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b71", "characterID": "5ab48ce969b013001d26f4ed", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b70", "characterID": "5ab48ce969b013001d26f4ef", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b6f", "characterID": "5ab48ce969b013001d26f4f3", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b6e", "characterID": "5ab48ce969b013001d26f503", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b6d", "characterID": "5ab48ce969b013001d26f505", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b6c", "characterID": "5ab48ce969b013001d26f50d", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b6b", "characterID": "5ab48ce969b013001d26f515", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b6a", "characterID": "5ab48ce969b013001d26f519", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b69", "characterID": "5ab48ce969b013001d26f51a", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b68", "characterID": "5ab48ce969b013001d26f528", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b67", "characterID": "5ab48ce969b013001d26f52c", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b66", "characterID": "5ab48ce969b013001d26f52e", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b65", "characterID": "5ab48ce969b013001d26f535", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b64", "characterID": "5ab48ce969b013001d26f53c", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b63", "characterID": "5ab48ce969b013001d26f541", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b62", "characterID": "5ab48ce969b013001d26f542", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b61", "characterID": "5ab48ce969b013001d26f552", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b60", "characterID": "5ab48ce969b013001d26f558", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b5f", "characterID": "5ab48ce969b013001d26f55b", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b5e", "characterID": "5ab48ce969b013001d26f568", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b5d", "characterID": "5ab48ce969b013001d26f569", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b5c", "characterID": "5ab48ce969b013001d26f56b", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b5b", "characterID": "5ab48ce969b013001d26f57e", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b5a", "characterID": "5ab48ce969b013001d26f585", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b59", "characterID": "5ab48ce969b013001d26f587", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b58", "characterID": "5ab48ce969b013001d26f58c", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b57", "characterID": "5ab48ce969b013001d26f58f", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b56", "characterID": "5ab48ce969b013001d26f598", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b55", "characterID": "5ab48ce969b013001d26f5a0", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b54", "characterID": "5ab48ce969b013001d26f5ab", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b53", "characterID": "5ab48ce969b013001d26f5ad", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b52", "characterID": "5b05276604041f001de1cec7", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b51", "characterID": "5b05276604041f001de1cecf", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b50", "characterID": "5b05276604041f001de1ced1", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b4f", "characterID": "5b05276604041f001de1ceda", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b4e", "characterID": "5b05276604041f001de1cee6", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b4d", "characterID": "5b05276604041f001de1cee7", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b4c", "characterID": "5b05276604041f001de1ceee", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b4b", "characterID": "5b1614bf6b9868001df21f39", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b4a", "characterID": "5b1614bf6b9868001df21f3c", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b49", "characterID": "5b1614bf6b9868001df21f44", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b48", "characterID": "5b166a1d6b9868001df22509", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b47", "characterID": "5b166a1d6b9868001df2250b", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b46", "characterID": "5b166a1d6b9868001df22512", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b45", "characterID": "5b334034d075be001dd96d2e", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b44", "characterID": "5b334034d075be001dd96d2f", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b43", "characterID": "5b334034d075be001dd96d30", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b42", "characterID": "5b334034d075be001dd96d42", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b41", "characterID": "5b334034d075be001dd96d49", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b40", "characterID": "5b334034d075be001dd96d50", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b3f", "characterID": "5b334034d075be001dd96d56", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b3e", "characterID": "5b334034d075be001dd96d59", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b3d", "characterID": "5b334034d075be001dd96d5b", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b39", "characterID": "5b334034d075be001dd96d7f", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b38", "characterID": "5b334034d075be001dd96d80", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b37", "characterID": "5b334034d075be001dd96d81", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b33", "characterID": "5b50690fce0e3d001d4377ac", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b32", "characterID": "5b50690fce0e3d001d4377af", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b31", "characterID": "5b50690fce0e3d001d4377b0", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b30", "characterID": "5b50690fce0e3d001d4377c0", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b2f", "characterID": "5b50690fce0e3d001d4377c2", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b2e", "characterID": "5b50690fce0e3d001d4377c9", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b2d", "characterID": "5b506d27ce0e3d001d438035", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b2c", "characterID": "5b50690fce0e3d001d4377d8", "level": 1, "spawnRate": 24, "maxSpawn": 1 }, { "_id": "5b59a34561a2220011900b2b", "characterID": "5b50690fce0e3d001d4377d9", "level": 1, "spawnRate": 24, "maxSpawn": 1 } ], "itemCatches": [], "itemConsumables": [], "landmark": null } ]
Tests:
_.filter + _.map
var results = _(objs).filter(obj => obj.characters.level == 1).map(obj => obj.characters).value();
array push in _.forEach
var results = [] _.forEach(objs, obj => { if(obj.characters.level == 1) results.push(obj.characters) });
_.reduce
var results = _.reduce(objs, (results, obj) => { if(obj.characters.level == 1) results.push(obj.characters) return results },[]);
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (3)
Previous results
Fork
Test case name
Result
_.filter + _.map
array push in _.forEach
_.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 data, it appears that you are trying to optimize the performance of JavaScript functions for filtering and mapping arrays. Here is a brief analysis: **Benchmarking Results:** The latest benchmark result shows three different test cases with varying performances: 1. `_.reduce` outperforms the other two options, executing at 5,050,720 executions per second. 2. `array push in _.forEach` is close behind, executing at approximately 4,668,690 executions per second. 3. `_.filter + _.map` has the lowest performance, executing at around 1,128,249 executions per second. **Suggestions for Improvement:** Based on these results, here are some suggestions: * Consider using `_.reduce` or `Array.prototype.reduce()` if you need to accumulate results in an array. * If your use case requires pushing elements to an array, consider using `array push in _.forEach` instead of `.filter + _.map`. * If performance is critical and you can't use these optimized methods, consider rewriting the logic using a simple `if-else` statement or a loop. **Code Review:** While there isn't any specific code provided, here are some general tips for reviewing JavaScript functions: * Use tools like Lodash or Underscore.js to simplify common operations and improve performance. * Avoid unnecessary array copies by using `_.map()` or `Array.prototype.map()` instead of `_.reduce()`. * Optimize loops by using `for...of` instead of `forEach()` when possible. Please note that without the actual code, these suggestions are based on general guidelines and may not be applicable to your specific use case.
Related benchmarks:
slice vs filter2
Some, Filter, indexOf.
Filter and Map vs Reduce
slice vs filter 342
slice vs filter2
Comments
Confirm delete:
Do you really want to delete benchmark?