diff --git a/benchmark/util/is-native-error.js b/benchmark/util/is-native-error.js new file mode 100644 index 00000000000000..480461670b7ac8 --- /dev/null +++ b/benchmark/util/is-native-error.js @@ -0,0 +1,35 @@ +'use strict'; + +const common = require('../common'); + +const args = { + true: new Error('test'), + falsePrimitive: 42, + falseObject: { foo: 'bar' }, +}; + +const bench = common.createBenchmark( + main, + { + argument: ['true', 'falsePrimitive', 'falseObject'], + version: ['native', 'js'], + n: [1e6], + }, + { + flags: ['--expose-internals', '--no-warnings'], + }, +); + +function main({ argument, version, n }) { + const util = common.binding('util'); + const types = require('internal/util/types'); + + const func = { native: util, js: types }[version].isNativeError; + const arg = args[argument]; + + bench.start(); + for (let iteration = 0; iteration < n; iteration++) { + func(arg); + } + bench.end(n); +}