From: Jérôme Benoit Date: Tue, 10 Feb 2026 21:59:23 +0000 (+0100) Subject: feat(bench): add remeda benchmarks and refactor imports X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=1bde556dd4a52559e5e0424db929dcab7ad4964b;p=benchmarks-js.git feat(bench): add remeda benchmarks and refactor imports Add remeda library with benchmarks for: - deep-clone-object: remedaClone - deep-merge-object: remedaMergeDeep - is-empty-object: remedaIsEmpty Refactor all ramda/remeda imports to use named imports instead of namespace imports for better tree-shaking. --- diff --git a/deep-clone-object.mjs b/deep-clone-object.mjs index e40efc0..dfe8509 100644 --- a/deep-clone-object.mjs +++ b/deep-clone-object.mjs @@ -1,7 +1,8 @@ import deepClone from 'deep-clone' import clone from 'just-clone' import _ from 'lodash' -import * as R from 'ramda' +import { clone as ramdaClone } from 'ramda' +import { clone as remedaClone } from 'remeda' import { Bench } from 'tinybench' import { generateRandomObject } from './benchmark-utils.mjs' @@ -30,7 +31,10 @@ bench deepClone(obj) }) .add('ramda clone', (obj = object) => { - R.clone(obj) + ramdaClone(obj) + }) + .add('remeda clone', (obj = object) => { + remedaClone(obj) }) await bench.run() diff --git a/deep-merge-object.mjs b/deep-merge-object.mjs index d1fd6f3..d479ed7 100644 --- a/deep-merge-object.mjs +++ b/deep-merge-object.mjs @@ -1,6 +1,7 @@ import deepMerge from 'deepmerge' import _ from 'lodash' -import * as R from 'ramda' +import { mergeDeepRight as ramdaMergeDeepRight } from 'ramda' +import { mergeDeep as remedaMergeDeep } from 'remeda' import { Bench } from 'tinybench' import { generateRandomObject } from './benchmark-utils.mjs' @@ -23,7 +24,10 @@ bench deepMerge(obj, objectToMerge) }) .add('ramda mergeDeepRight', (obj = object) => { - R.mergeDeepRight(obj, objectToMerge) + ramdaMergeDeepRight(obj, objectToMerge) + }) + .add('remeda mergeDeep', (obj = object) => { + remedaMergeDeep(obj, objectToMerge) }) await bench.run() diff --git a/is-empty-object.mjs b/is-empty-object.mjs index 1f4f0cc..5a32c92 100644 --- a/is-empty-object.mjs +++ b/is-empty-object.mjs @@ -1,5 +1,6 @@ import _ from 'lodash' -import * as R from 'ramda' +import { isEmpty as ramdaIsEmpty } from 'ramda' +import { isEmpty as remedaIsEmpty } from 'remeda' import { Bench } from 'tinybench' import { generateRandomObject } from './benchmark-utils.mjs' @@ -30,7 +31,10 @@ bench _.isEmpty(obj) }) .add('ramda isEmpty', (obj = object) => { - R.isEmpty(obj) + ramdaIsEmpty(obj) + }) + .add('remeda isEmpty', (obj = object) => { + remedaIsEmpty(obj) }) await bench.run() diff --git a/max.mjs b/max.mjs index b1ec495..7ce26ca 100644 --- a/max.mjs +++ b/max.mjs @@ -1,4 +1,4 @@ -import * as R from 'ramda' +import { max as ramdaMax, reduce as ramdaReduce } from 'ramda' import { Bench } from 'tinybench' import { generateRandomNumberArray } from './benchmark-utils.mjs' @@ -74,7 +74,7 @@ bench sortMax(testArray) }) .add('ramda reduce max', () => { - R.reduce(R.max, Number.NEGATIVE_INFINITY, testArray) + ramdaReduce(ramdaMax, Number.NEGATIVE_INFINITY, testArray) }) await bench.run() diff --git a/min.mjs b/min.mjs index 93ca99c..21484cc 100644 --- a/min.mjs +++ b/min.mjs @@ -1,4 +1,4 @@ -import * as R from 'ramda' +import { min as ramdaMin, reduce as ramdaReduce } from 'ramda' import { Bench } from 'tinybench' import { generateRandomNumberArray } from './benchmark-utils.mjs' @@ -74,7 +74,7 @@ bench sortMin(testArray) }) .add('ramda reduce min', () => { - R.reduce(R.min, Number.POSITIVE_INFINITY, testArray) + ramdaReduce(ramdaMin, Number.POSITIVE_INFINITY, testArray) }) await bench.run() diff --git a/package.json b/package.json index 42ebaab..3e33912 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "node-object-hash": "^3.1.1", "object-hash": "^3.0.0", "ramda": "^0.32.0", + "remeda": "^2.33.6", "tinybench": "^6.0.0", "uuid": "^13.0.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1780f3f..b609117 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,9 @@ importers: ramda: specifier: ^0.32.0 version: 0.32.0 + remeda: + specifier: ^2.33.6 + version: 2.33.6 tinybench: specifier: ^6.0.0 version: 6.0.0 @@ -1528,6 +1531,9 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} + remeda@2.33.6: + resolution: {integrity: sha512-tazDGH7s75kUPGBKLvhgBEHMgW+TdDFhjUAMdQj57IoWz6HsGa5D2RX5yDUz6IIqiRRvZiaEHzCzWdTeixc/Kg==} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -3466,6 +3472,8 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 + remeda@2.33.6: {} + require-directory@2.1.1: {} require-from-string@2.0.2: {}