build(deps-dev): apply updates
[benchmarks-js.git] / is-empty-object.mjs
CommitLineData
f522d7b9 1import Benchmark from 'benny'
0c01f51c 2
95d31631 3import { generateRandomObject } from './benchmark-utils.mjs'
b64305b2 4
8e1fbc06 5const object = generateRandomObject()
b64305b2
JB
6
7Benchmark.suite(
8e1fbc06 8 `Is empty object with ${Object.keys(object).length} keys`,
5b907dbf 9 Benchmark.add('Reflect keys', (obj = object) => {
2d1206f1 10 return obj?.constructor === Object && Reflect.ownKeys(obj).length === 0
b64305b2 11 }),
5b907dbf 12 Benchmark.add('Keys iteration', (obj = object) => {
9d7eeee7 13 if (obj?.constructor !== Object) return false
b64305b2
JB
14 // Iterates over the keys of an object, if
15 // any exist, return false.
16 // eslint-disable-next-line no-unreachable-loop
17 for (const _ in obj) return false
18 return true
19 }),
5b907dbf 20 Benchmark.add('Object keys', (obj = object) => {
2d1206f1 21 return obj?.constructor === Object && Object.keys(obj).length === 0
b64305b2
JB
22 }),
23 Benchmark.cycle(),
24 Benchmark.complete(),
25 Benchmark.save({
bb578730 26 file: 'is-empty-object',
b64305b2
JB
27 format: 'json',
28 details: true
29 }),
30 Benchmark.save({
bb578730 31 file: 'is-empty-object',
b64305b2
JB
32 format: 'chart.html',
33 details: true
34 }),
35 Benchmark.save({
bb578730 36 file: 'is-empty-object',
b64305b2
JB
37 format: 'table.html',
38 details: true
39 })
4aa2893a 40).catch(console.error)