Add is undefined benchmark
[benchmarks-js.git] / is-empty-object.js
CommitLineData
b64305b2 1const Benchmark = require('benny')
bb578730 2const { generateRandomInteger } = require('./benchmark-utils')
b64305b2 3
bb578730
JB
4const size = generateRandomInteger(100000)
5const testObject = {}
6for (let i = 0; i < size; i++) {
7 testObject[i.toString()] = i
8}
b64305b2
JB
9
10Benchmark.suite(
bb578730
JB
11 `Is empty object with ${size} keys`,
12 Benchmark.add('Reflect keys', (obj = testObject) => {
baef0896 13 return Reflect.ownKeys(obj).length === 0 && obj?.constructor === Object
b64305b2 14 }),
adad2e80 15 Benchmark.add('Keys iteration', (obj = testObject) => {
9d7eeee7 16 if (obj?.constructor !== Object) return false
b64305b2
JB
17 // Iterates over the keys of an object, if
18 // any exist, return false.
19 // eslint-disable-next-line no-unreachable-loop
20 for (const _ in obj) return false
21 return true
22 }),
bb578730 23 Benchmark.add('Object keys', (obj = testObject) => {
baef0896 24 return obj?.constructor === Object && !Object.keys(obj).length
b64305b2
JB
25 }),
26 Benchmark.cycle(),
27 Benchmark.complete(),
28 Benchmark.save({
bb578730 29 file: 'is-empty-object',
b64305b2
JB
30 format: 'json',
31 details: true
32 }),
33 Benchmark.save({
bb578730 34 file: 'is-empty-object',
b64305b2
JB
35 format: 'chart.html',
36 details: true
37 }),
38 Benchmark.save({
bb578730 39 file: 'is-empty-object',
b64305b2
JB
40 format: 'table.html',
41 details: true
42 })
43)