]> Piment Noir Git Repositories - benchmarks-js.git/commitdiff
feat(bench): add ramda benchmarks
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 10 Feb 2026 21:53:02 +0000 (22:53 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 10 Feb 2026 21:53:02 +0000 (22:53 +0100)
Add ramda library and benchmarks for:
- deep-clone-object: R.clone
- deep-merge-object: R.mergeDeepRight
- is-empty-object: R.isEmpty
- min: R.reduce(R.min, ...)
- max: R.reduce(R.max, ...)

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

index 88c1bc1c5e9447ac64f3bdba46ca66b276edc47f..e40efc0440f171ed63d3c4cfb40df0a2f946dcf1 100644 (file)
@@ -1,6 +1,7 @@
 import deepClone from 'deep-clone'
 import clone from 'just-clone'
 import _ from 'lodash'
+import * as R from 'ramda'
 import { Bench } from 'tinybench'
 
 import { generateRandomObject } from './benchmark-utils.mjs'
@@ -28,6 +29,9 @@ bench
   .add('deep-clone', (obj = object) => {
     deepClone(obj)
   })
+  .add('ramda clone', (obj = object) => {
+    R.clone(obj)
+  })
 
 await bench.run()
 
index e4c6bf893dbedbc764c81caf1aa38ecdbee58e81..d1fd6f39fc44426cec06c8eed3f5ed815c62c9a1 100644 (file)
@@ -1,5 +1,6 @@
 import deepMerge from 'deepmerge'
 import _ from 'lodash'
+import * as R from 'ramda'
 import { Bench } from 'tinybench'
 
 import { generateRandomObject } from './benchmark-utils.mjs'
@@ -21,6 +22,9 @@ bench
   .add('deepmerge', (obj = object) => {
     deepMerge(obj, objectToMerge)
   })
+  .add('ramda mergeDeepRight', (obj = object) => {
+    R.mergeDeepRight(obj, objectToMerge)
+  })
 
 await bench.run()
 
index ae5647ae6f34cc2c4f89fc34809caf61cf6ecddc..1f4f0cc512a130ea41f8395630b7497366e555a8 100644 (file)
@@ -1,4 +1,5 @@
 import _ from 'lodash'
+import * as R from 'ramda'
 import { Bench } from 'tinybench'
 
 import { generateRandomObject } from './benchmark-utils.mjs'
@@ -28,6 +29,9 @@ bench
   .add('lodash isEmpty', (obj = object) => {
     _.isEmpty(obj)
   })
+  .add('ramda isEmpty', (obj = object) => {
+    R.isEmpty(obj)
+  })
 
 await bench.run()
 
diff --git a/max.mjs b/max.mjs
index a43ce5cb6b381c1da683ce1d97a5cf02138e2f81..b1ec495345dbc2d3a2705272be740f31b1b9bd2e 100644 (file)
--- a/max.mjs
+++ b/max.mjs
@@ -1,3 +1,4 @@
+import * as R from 'ramda'
 import { Bench } from 'tinybench'
 
 import { generateRandomNumberArray } from './benchmark-utils.mjs'
@@ -72,6 +73,9 @@ bench
   .add('sortMax', () => {
     sortMax(testArray)
   })
+  .add('ramda reduce max', () => {
+    R.reduce(R.max, Number.NEGATIVE_INFINITY, testArray)
+  })
 
 await bench.run()
 
diff --git a/min.mjs b/min.mjs
index c95b4ae96ed93ea6030e94073d60a8292ff490e9..93ca99c8aff1cf8f23a734913c08c058eb774af4 100644 (file)
--- a/min.mjs
+++ b/min.mjs
@@ -1,3 +1,4 @@
+import * as R from 'ramda'
 import { Bench } from 'tinybench'
 
 import { generateRandomNumberArray } from './benchmark-utils.mjs'
@@ -72,6 +73,9 @@ bench
   .add('sortMin', () => {
     sortMin(testArray)
   })
+  .add('ramda reduce min', () => {
+    R.reduce(R.min, Number.POSITIVE_INFINITY, testArray)
+  })
 
 await bench.run()
 
index 2ac04596587d894f2db7fbc3091d24f505927290..42ebaab07a16f93faa52938209b46220e588d817 100644 (file)
@@ -69,6 +69,7 @@
     "lodash": "^4.17.23",
     "node-object-hash": "^3.1.1",
     "object-hash": "^3.0.0",
+    "ramda": "^0.32.0",
     "tinybench": "^6.0.0",
     "uuid": "^13.0.0"
   },
index 51eec053b6d037ffcb7507ff8a66dc1e27e0ecfb..1780f3f7917304ca40cbf63c3658b94a75682d93 100644 (file)
@@ -32,6 +32,9 @@ importers:
       object-hash:
         specifier: ^3.0.0
         version: 3.0.0
+      ramda:
+        specifier: ^0.32.0
+        version: 0.32.0
       tinybench:
         specifier: ^6.0.0
         version: 6.0.0
@@ -1511,6 +1514,9 @@ packages:
     resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
     engines: {node: '>=6'}
 
+  ramda@0.32.0:
+    resolution: {integrity: sha512-GQWAHhxhxWBWA8oIBr1XahFVjQ9Fic6MK9ikijfd4TZHfE2+urfk+irVlR5VOn48uwMgM+loRRBJd6Yjsbc0zQ==}
+
   react-is@16.13.1:
     resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
 
@@ -3436,6 +3442,8 @@ snapshots:
 
   punycode@2.3.1: {}
 
+  ramda@0.32.0: {}
+
   react-is@16.13.1: {}
 
   reflect.getprototypeof@1.0.10: