11cb0ef41Sopenharmony_ci'use strict';
21cb0ef41Sopenharmony_ciconst common = require('../common.js');
31cb0ef41Sopenharmony_ciconst { EventEmitter } = require('events');
41cb0ef41Sopenharmony_ci
51cb0ef41Sopenharmony_ciconst bench = common.createBenchmark(main, {
61cb0ef41Sopenharmony_ci  newListener: [0, 1],
71cb0ef41Sopenharmony_ci  removeListener: [0, 1],
81cb0ef41Sopenharmony_ci  n: [1e6],
91cb0ef41Sopenharmony_ci});
101cb0ef41Sopenharmony_ci
111cb0ef41Sopenharmony_cifunction main({ newListener, removeListener, n }) {
121cb0ef41Sopenharmony_ci  const ee = new EventEmitter();
131cb0ef41Sopenharmony_ci  const listeners = [];
141cb0ef41Sopenharmony_ci
151cb0ef41Sopenharmony_ci  for (let k = 0; k < 10; k += 1)
161cb0ef41Sopenharmony_ci    listeners.push(() => {});
171cb0ef41Sopenharmony_ci
181cb0ef41Sopenharmony_ci  if (newListener === 1)
191cb0ef41Sopenharmony_ci    ee.on('newListener', (event, listener) => {});
201cb0ef41Sopenharmony_ci
211cb0ef41Sopenharmony_ci  if (removeListener === 1)
221cb0ef41Sopenharmony_ci    ee.on('removeListener', (event, listener) => {});
231cb0ef41Sopenharmony_ci
241cb0ef41Sopenharmony_ci  bench.start();
251cb0ef41Sopenharmony_ci  for (let i = 0; i < n; i += 1) {
261cb0ef41Sopenharmony_ci    const dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1';
271cb0ef41Sopenharmony_ci    for (let k = listeners.length; --k >= 0; /* empty */) {
281cb0ef41Sopenharmony_ci      ee.on(dummy, listeners[k]);
291cb0ef41Sopenharmony_ci    }
301cb0ef41Sopenharmony_ci    for (let k = listeners.length; --k >= 0; /* empty */) {
311cb0ef41Sopenharmony_ci      ee.removeListener(dummy, listeners[k]);
321cb0ef41Sopenharmony_ci    }
331cb0ef41Sopenharmony_ci  }
341cb0ef41Sopenharmony_ci  bench.end(n);
351cb0ef41Sopenharmony_ci}
36