Skip to content
35 changes: 35 additions & 0 deletions benchmark/util/is-native-error.js
Original file line number Diff line number Diff line change
@@ -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'],
version: ['native'],
Comment thread
H4ad marked this conversation as resolved.
Outdated
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;
Copy link
Copy Markdown
Member

@RafaelGSS RafaelGSS Dec 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't recently deprecated?

### DEP0197: `util.types.isNativeError()`

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is deprecated but still supported - we should still not regress on stable releases and this change ensures that @RafaelGSS

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But, what's the point of this benchmark? I mean, if we see util/isNativeError is slower, what it means afterall? Which API will be directly impacted besides the deprecated API?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comparison ensures that existing users will not experience performance drops or unexpected slowdowns until the API is completely removed. It also aims to provide a reference for future changes or alternatives.

const arg = args[argument];

bench.start();
for (let iteration = 0; iteration < n; iteration++) {
func(arg);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is likely being optimized.

Copy link
Copy Markdown
Member Author

@mertcanaltin mertcanaltin Dec 27, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, I tried to fix this by using more arguments and variable arguments. 5fcf423

Comment thread
mertcanaltin marked this conversation as resolved.
Outdated
}
bench.end(n);
}
Loading