build(deps-dev): apply updates
[benchmarks-js.git] / deep-clone-object.mjs
1 /* eslint-disable no-unused-vars */
2 import Benchmark from 'benny'
3 import _ from 'lodash'
4 import clone from 'just-clone'
5 import deepClone from 'deep-clone'
6 import { generateRandomObject } from './benchmark-utils.mjs'
7
8 const object = generateRandomObject()
9
10 Benchmark.suite(
11 `Deep clone object with ${Object.keys(object).length} keys`,
12 Benchmark.add('JSON stringify/parse', (obj = object) => {
13 const objCloned = JSON.parse(JSON.stringify(obj))
14 }),
15 Benchmark.add('structuredClone', (obj = object) => {
16 const objCloned = structuredClone(obj)
17 }),
18 Benchmark.add('lodash cloneDeep', (obj = object) => {
19 const objCloned = _.cloneDeep(obj)
20 }),
21 Benchmark.add('just-clone', (obj = object) => {
22 const objCloned = clone(obj)
23 }),
24 Benchmark.add('deep-clone', (obj = object) => {
25 const objCloned = deepClone(obj)
26 }),
27 Benchmark.cycle(),
28 Benchmark.complete(),
29 Benchmark.save({
30 file: 'deep-clone-object',
31 format: 'json',
32 details: true
33 }),
34 Benchmark.save({
35 file: 'deep-clone-object',
36 format: 'chart.html',
37 details: true
38 }),
39 Benchmark.save({
40 file: 'deep-clone-object',
41 format: 'table.html',
42 details: true
43 })
44 ).catch(console.error)