'use strict'; const common = require('../common.js'); const { throws, doesNotThrow } = require('assert'); const bench = common.createBenchmark(main, { n: [1e4], method: [ 'doesNotThrow', 'throws_TypeError', 'throws_RegExp' ], }); function main({ n, method }) { const throwError = () => { throw new TypeError('foobar'); }; const doNotThrowError = () => { return 'foobar'; }; const regExp = /foobar/; const message = 'failure'; switch (method) { case '': // Empty string falls through to next line as default, mostly for tests. case 'doesNotThrow': bench.start(); for (let i = 0; i < n; ++i) { doesNotThrow(doNotThrowError); } bench.end(n); break; case 'throws_TypeError': bench.start(); for (let i = 0; i < n; ++i) { throws(throwError, TypeError, message); } bench.end(n); break; case 'throws_RegExp': bench.start(); for (let i = 0; i < n; ++i) { throws(throwError, regExp, message); } bench.end(n); break; default: throw new Error(`Unsupported method ${method}`); } }