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