• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3const common = require('../common.js');
4
5const bench = common.createBenchmark(main, {
6  type: ['hide-stackframes-throw', 'direct-call-throw',
7         'hide-stackframes-noerr', 'direct-call-noerr'],
8  n: [10e4]
9}, {
10  flags: ['--expose-internals']
11});
12
13function main({ n, type }) {
14  const {
15    hideStackFrames,
16    codes: {
17      ERR_INVALID_ARG_TYPE,
18    },
19  } = require('internal/errors');
20
21  const testfn = (value) => {
22    if (typeof value !== 'number') {
23      throw new ERR_INVALID_ARG_TYPE('Benchmark', 'number', value);
24    }
25  };
26
27  let fn = testfn;
28  if (type.startsWith('hide-stackframe'))
29    fn = hideStackFrames(testfn);
30  let value = 42;
31  if (type.endsWith('-throw'))
32    value = 'err';
33
34  bench.start();
35
36  for (let i = 0; i < n; i++) {
37    try {
38      fn(value);
39    } catch {
40      // No-op
41    }
42  }
43
44  bench.end(n);
45}
46