/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
benchmark/error/hidestackframes-noerr.js
62 строки
1 KB
Aras Abbasi
errors: improve hideStackFrames
11 ноя 2023, 19:25
Не верифицирован
11 ноя 2023, 19:25
83e6350
Код
Авторство
О чём код?
'use strict'; const common = require('../common.js'); const assert = require('assert'); const bench = common.createBenchmark(main, { type: [ 'hide-stackframes', 'direct-call', ], n: [1e7], }, { 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); } }; const hideStackFramesTestfn = hideStackFrames((value) => { if (typeof value !== 'number') { throw new ERR_INVALID_ARG_TYPE.HideStackFrameError('Benchmark', 'number', value); } }); const fn = type === 'hide-stackframe' ? hideStackFramesTestfn : testfn; const value = 42; const length = 1024; const array = []; const errCase = false; for (let i = 0; i < length; ++i) { array.push(fn(value)); } bench.start(); for (let i = 0; i < n; i++) { const index = i % length; array[index] = fn(value); } bench.end(n); // Verify the entries to prevent dead code elimination from making // the benchmark invalid. for (let i = 0; i < length; ++i) { assert.strictEqual(typeof array[i], errCase ? 'object' : 'undefined'); } }