| 'use strict'; |
| |
| const common = require('../common.js'); |
| |
| const bench = common.createBenchmark(main, { |
| type: ['hide-stackframes-throw', 'direct-call-throw', |
| 'hide-stackframes-noerr', 'direct-call-noerr'], |
| n: [10e4] |
| }, { |
| flags: ['--expose-internals'] |
| }); |
| |
| function main({ n, type }) { |
| const { |
| hideStackFrames, |
| codes: { |
| ERR_INVALID_ARG_TYPE, |
| }, |
| } = require('internal/errors'); |
| |
| const testfn = (value) => { |
| if (typeof value !== 'number') { |
| throw new ERR_INVALID_ARG_TYPE('Benchmark', 'number', value); |
| } |
| }; |
| |
| let fn = testfn; |
| if (type.startsWith('hide-stackframe')) |
| fn = hideStackFrames(testfn); |
| let value = 42; |
| if (type.endsWith('-throw')) |
| value = 'err'; |
| |
| bench.start(); |
| |
| for (let i = 0; i < n; i++) { |
| try { |
| fn(value); |
| } catch { |
| // No-op |
| } |
| } |
| |
| bench.end(n); |
| } |