From: Jérôme Benoit Date: Tue, 10 Feb 2026 21:53:02 +0000 (+0100) Subject: feat(bench): add ramda benchmarks X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=1bd2038dfcacbe8db7855ad727ccd6060c46e206;p=benchmarks-js.git feat(bench): add ramda benchmarks 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, ...) --- diff --git a/deep-clone-object.mjs b/deep-clone-object.mjs index 88c1bc1..e40efc0 100644 --- a/deep-clone-object.mjs +++ b/deep-clone-object.mjs @@ -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() diff --git a/deep-merge-object.mjs b/deep-merge-object.mjs index e4c6bf8..d1fd6f3 100644 --- a/deep-merge-object.mjs +++ b/deep-merge-object.mjs @@ -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() diff --git a/is-empty-object.mjs b/is-empty-object.mjs index ae5647a..1f4f0cc 100644 --- a/is-empty-object.mjs +++ b/is-empty-object.mjs @@ -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 a43ce5c..b1ec495 100644 --- 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 c95b4ae..93ca99c 100644 --- 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() diff --git a/package.json b/package.json index 2ac0459..42ebaab 100644 --- a/package.json +++ b/package.json @@ -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" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51eec05..1780f3f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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: