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