Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Lodash vs Ramda vs Remeda
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/145.0.0.0 Safari/537.36
Browser:
Chrome 145
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one month ago
Test name
Executions per second
Lodash
920.5 Ops/sec
Ramda
677.3 Ops/sec
Remeda
477.9 Ops/sec
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/ramda/0.31.3/ramda.min.js'></script>
Script Preparation code:
const N = 80_000; const DATA = Array.from({ length: N }, (_, i) => ({ id: i, active: (i & 1) === 0, // half active score: (i * 7) % 100, // 0..99 group: (i % 25), // 25 groups name: "user_" + i, tags: [i % 5, i % 7, i % 11], })); window.DATA = DATA; // ---- Remeda loader: attach to window.Rm (avoids clash with Ramda's R) window.RmReady = (async () => { if (!window.Rm) { const m = await import('https://esm.sh/remeda@2'); // Expose the namespace under 'Rm' to avoid 'R' collision with Ramda window.Rm = m; } })();
Tests:
Lodash
const res = _(DATA) .filter(u => u.active && u.score > 50) .groupBy('group') .mapValues(arr => _.sumBy(arr, 'score')) .value();
Ramda
// R.pipe is available globally from ramda const res = R.pipe( R.filter(u => u.active && u.score > 50), R.groupBy(u => String(u.group)), R.map(arr => R.sum(R.pluck('score', arr))) )(DATA);
Remeda
// Ensure Remeda is present if (!window.Rm) throw new Error("Remeda not loaded"); // Use Rm.pipe to avoid clashing with Ramda's R const Rm = window.Rm; const res = Rm.pipe( DATA, Rm.filter(u => u.active && u.score > 50), Rm.groupBy(u => String(u.group)), Rm.mapValues(arr => Rm.sumBy(arr, x => x.score)) );