-/* eslint-disable no-unused-vars */
-import Benchmark from 'benny'
import _ from 'lodash'
+import { assoc } from 'rambda'
+import { bench, group, run } from 'tatami-ng'
+
import { generateRandomObject } from './benchmark-utils.mjs'
const object = generateRandomObject()
-Benchmark.suite(
- `Shallow clone object with ${Object.keys(object).length} keys`,
- Benchmark.add('Spread', (obj = object) => {
- const objClone = { ...obj }
- }),
- Benchmark.add('Object assign', (obj = object) => {
- const objClone = Object.assign({}, obj)
- }),
- Benchmark.add('lodash clone', (obj = object) => {
- const objClone = _.clone(obj)
- }),
- Benchmark.cycle(),
- Benchmark.complete(),
- Benchmark.save({
- file: 'shallow-clone-object',
- format: 'json',
- details: true
- }),
- Benchmark.save({
- file: 'shallow-clone-object',
- format: 'chart.html',
- details: true
- }),
- Benchmark.save({
- file: 'shallow-clone-object',
- format: 'table.html',
- details: true
+group(`Shallow clone object with ${Object.keys(object).length} keys`, () => {
+ bench('Spread', () => {
+ return { ...object }
+ })
+ bench('Object assign', () => {
+ return Object.assign({}, object)
+ })
+ bench('lodash clone', () => {
+ _.clone(object)
})
-).catch(err => {
- console.error(err)
+ bench('rambda assoc', () => {
+ assoc(object)
+ })
+})
+
+await run({
+ units: true,
})