• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3const common = require('../common.js');
4
5const bench = common.createBenchmark(main, {
6  n: [100000],
7  method: ['trace', 'isTraceCategoryEnabled']
8}, {
9  flags: [
10    '--expose-internals',
11    '--no-warnings',
12    '--trace-event-categories', 'foo',
13  ]
14});
15
16const {
17  TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN: kBeforeEvent
18} = common.binding('constants').trace;
19
20function doTrace(n, trace) {
21  bench.start();
22  for (let i = 0; i < n; i++) {
23    trace(kBeforeEvent, 'foo', 'test', 0, 'test');
24  }
25  bench.end(n);
26}
27
28function doIsTraceCategoryEnabled(n, isTraceCategoryEnabled) {
29  bench.start();
30  for (let i = 0; i < n; i++) {
31    isTraceCategoryEnabled('foo');
32    isTraceCategoryEnabled('bar');
33  }
34  bench.end(n);
35}
36
37function main({ n, method }) {
38  const {
39    trace,
40    isTraceCategoryEnabled
41  } = common.binding('trace_events');
42
43  switch (method) {
44    case 'trace':
45      doTrace(n, trace);
46      break;
47    case 'isTraceCategoryEnabled':
48      doIsTraceCategoryEnabled(n, isTraceCategoryEnabled);
49      break;
50    default:
51      throw new Error(`Unexpected method "${method}"`);
52  }
53}
54