Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
lodash deepPick vs ramda deepPick
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.7 Mobile/15E148 Safari/604.1
Browser:
Mobile Safari 18
Operating system:
iOS 18.7
Device Platform:
Mobile
Date tested:
9 months ago
Test name
Executions per second
lodash deepPick
31026.8 Ops/sec
ramda deepPick
66251.1 Ops/sec
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js'></script> <script src="//cdn.jsdelivr.net/npm/ramda@latest/dist/ramda.min.js"></script>
Script Preparation code:
const pickPathsLodash = (paths, obj) => _.reduce( paths, (result, path) => { const value = _.get(obj, path); if (value !== undefined) { _.set(result, path, value); } return result; }, {} ); const pickPathsRamda = R.curry((paths, obj) => R.reduce( (acc, path) => { const value = R.path(path, obj); return value !== undefined ? R.assocPath(path, value, acc) : acc; }, {}, paths ) ); const largeSourceObject = {}; const pathsToKeep = []; const pathsToKeepLodash = []; for (let i = 0; i < 50; i++) { _.set(largeSourceObject, `level1_${i}.level2.level3`, { value: i, timestamp: Date.now() }); // We'll pick about half of the paths if (i % 2 === 0) { pathsToKeep.push([`level1_${i}`, 'level2', 'level3', 'value']); pathsToKeepLodash.push(`level1_${i}.level2.level3.value`); } }
Tests:
lodash deepPick
pickPathsLodash(pathsToKeepLodash, largeSourceObject);
ramda deepPick
pickPathsRamda(pathsToKeep, largeSourceObject);