From: Jérôme Benoit Date: Tue, 10 Feb 2026 22:00:41 +0000 (+0100) Subject: feat(bench): add nanoid and immer benchmarks X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=473df3ea0887565cef9984fb0ae73c3c3fa50f0b;p=benchmarks-js.git feat(bench): add nanoid and immer benchmarks - uuid-generator: add nanoid for ID generation comparison - deep-clone-object: add immer produce for immutable clone comparison --- diff --git a/deep-clone-object.mjs b/deep-clone-object.mjs index dfe8509..9ed2c56 100644 --- a/deep-clone-object.mjs +++ b/deep-clone-object.mjs @@ -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() diff --git a/package.json b/package.json index 3e33912..a6492d7 100644 --- a/package.json +++ b/package.json @@ -65,8 +65,10 @@ "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", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b609117..e0b2069 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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: {} diff --git a/uuid-generator.mjs b/uuid-generator.mjs index 7012a55..e233fb5 100644 --- a/uuid-generator.mjs +++ b/uuid-generator.mjs @@ -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())