]> Piment Noir Git Repositories - benchmarks-js.git/commitdiff
feat(bench): add nanoid and immer benchmarks
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 10 Feb 2026 22:00:41 +0000 (23:00 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 10 Feb 2026 22:00:41 +0000 (23:00 +0100)
- uuid-generator: add nanoid for ID generation comparison
- deep-clone-object: add immer produce for immutable clone comparison

deep-clone-object.mjs
package.json
pnpm-lock.yaml
uuid-generator.mjs

index dfe8509cc7b03ed6c3d805f402a1b5fc7f2596da..9ed2c56648fdf6d950ff842a57301a011eb150c4 100644 (file)
@@ -1,4 +1,5 @@
 import deepClone from 'deep-clone'
+import { produce } from 'immer'
 import clone from 'just-clone'
 import _ from 'lodash'
 import { clone as ramdaClone } from 'ramda'
@@ -36,6 +37,9 @@ bench
   .add('remeda clone', (obj = object) => {
     remedaClone(obj)
   })
+  .add('immer produce', (obj = object) => {
+    produce(obj, draft => ({ ...draft }))
+  })
 
 await bench.run()
 
index 3e33912ab4b53e3d6cb98ec3886a6337e65153f5..a6492d721d02a4e1abfc4e084aa2468cac093910 100644 (file)
     "deep-clone": "^4.0.0",
     "deepmerge": "^4.3.1",
     "hash-object": "^5.1.0",
+    "immer": "^11.1.4",
     "just-clone": "^6.2.0",
     "lodash": "^4.17.23",
+    "nanoid": "^5.1.6",
     "node-object-hash": "^3.1.1",
     "object-hash": "^3.0.0",
     "ramda": "^0.32.0",
index b609117c526ce78354d8264d2ad68030feb15810..e0b206912fe9cd45979df1e379947a847f3855ba 100644 (file)
@@ -20,12 +20,18 @@ importers:
       hash-object:
         specifier: ^5.1.0
         version: 5.1.0
+      immer:
+        specifier: ^11.1.4
+        version: 11.1.4
       just-clone:
         specifier: ^6.2.0
         version: 6.2.0
       lodash:
         specifier: ^4.17.23
         version: 4.17.23
+      nanoid:
+        specifier: ^5.1.6
+        version: 5.1.6
       node-object-hash:
         specifier: ^3.1.1
         version: 3.1.1
@@ -1086,6 +1092,9 @@ packages:
     resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
     engines: {node: '>= 4'}
 
+  immer@11.1.4:
+    resolution: {integrity: sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==}
+
   import-fresh@3.3.1:
     resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
     engines: {node: '>=6'}
@@ -1374,6 +1383,11 @@ packages:
     resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==}
     engines: {node: '>=20.17'}
 
+  nanoid@5.1.6:
+    resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==}
+    engines: {node: ^18 || >=20}
+    hasBin: true
+
   napi-postinstall@0.3.4:
     resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
     engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
@@ -3027,6 +3041,8 @@ snapshots:
 
   ignore@7.0.5: {}
 
+  immer@11.1.4: {}
+
   import-fresh@3.3.1:
     dependencies:
       parent-module: 1.0.1
@@ -3305,6 +3321,8 @@ snapshots:
 
   nano-spawn@2.0.0: {}
 
+  nanoid@5.1.6: {}
+
   napi-postinstall@0.3.4: {}
 
   natural-compare@1.4.0: {}
index 7012a557c4407b891db5cbef5024ae0547281656..e233fb555a2fb1b30dc23aab2e718b008365ebaa 100644 (file)
@@ -1,3 +1,4 @@
+import { nanoid } from 'nanoid'
 import { randomUUID } from 'node:crypto'
 import { Bench } from 'tinybench'
 import { v4 as uuid } from 'uuid'
@@ -10,6 +11,9 @@ bench.add('randomUUID', () => {
 bench.add('uuid', () => {
   uuid()
 })
+bench.add('nanoid', () => {
+  nanoid()
+})
 
 await bench.run()
 console.table(bench.table())