]> Piment Noir Git Repositories - benchmarks-js.git/commitdiff
feat(bench): add remeda benchmarks and refactor imports
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 10 Feb 2026 21:59:23 +0000 (22:59 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 10 Feb 2026 21:59:23 +0000 (22:59 +0100)
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.

deep-clone-object.mjs
deep-merge-object.mjs
is-empty-object.mjs
max.mjs
min.mjs
package.json
pnpm-lock.yaml

index e40efc0440f171ed63d3c4cfb40df0a2f946dcf1..dfe8509cc7b03ed6c3d805f402a1b5fc7f2596da 100644 (file)
@@ -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()
index d1fd6f39fc44426cec06c8eed3f5ed815c62c9a1..d479ed7cffb7ef8c9f9f09b89d1dfe972e6989b1 100644 (file)
@@ -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()
index 1f4f0cc512a130ea41f8395630b7497366e555a8..5a32c92daeeecafb5407c21c93b370b3cc75c446 100644 (file)
@@ -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 b1ec495345dbc2d3a2705272be740f31b1b9bd2e..7ce26ca1e5a109fb000f95dc1bfc3f40b9e11c66 100644 (file)
--- 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 93ca99c8aff1cf8f23a734913c08c058eb774af4..21484cc63ddfae4aa77b6538a8590176e916c00e 100644 (file)
--- 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()
index 42ebaab07a16f93faa52938209b46220e588d817..3e33912ab4b53e3d6cb98ec3886a6337e65153f5 100644 (file)
@@ -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"
   },
index 1780f3f7917304ca40cbf63c3658b94a75682d93..b609117c526ce78354d8264d2ad68030feb15810 100644 (file)
@@ -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: {}