mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
952cf0d17a
PR-URL: https://github.com/nodejs/node/pull/49928 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
76 lines
1.5 KiB
JavaScript
76 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
|
|
const bench = common.createBenchmark(main, {
|
|
n: [1e5],
|
|
objectToTest: [
|
|
'object',
|
|
'null',
|
|
'array',
|
|
'function',
|
|
],
|
|
}, {
|
|
flags: ['--expose-internals'],
|
|
});
|
|
|
|
function getObjectToTest(objectToTest) {
|
|
switch (objectToTest) {
|
|
case 'object':
|
|
return { foo: 'bar' };
|
|
case 'null':
|
|
return null;
|
|
case 'array':
|
|
return ['foo', 'bar'];
|
|
case 'function':
|
|
return () => 'foo';
|
|
default:
|
|
throw new Error(`Value ${objectToTest} is not a valid objectToTest.`);
|
|
}
|
|
}
|
|
|
|
function getOptions(objectToTest) {
|
|
const {
|
|
kValidateObjectAllowNullable,
|
|
kValidateObjectAllowArray,
|
|
kValidateObjectAllowFunction,
|
|
} = require('internal/validators');
|
|
|
|
switch (objectToTest) {
|
|
case 'object':
|
|
return 0;
|
|
case 'null':
|
|
return kValidateObjectAllowNullable;
|
|
case 'array':
|
|
return kValidateObjectAllowArray;
|
|
case 'function':
|
|
return kValidateObjectAllowFunction;
|
|
default:
|
|
throw new Error(`Value ${objectToTest} is not a valid objectToTest.`);
|
|
}
|
|
}
|
|
|
|
let _validateResult;
|
|
|
|
function main({ n, objectToTest }) {
|
|
const {
|
|
validateObject,
|
|
} = require('internal/validators');
|
|
|
|
const value = getObjectToTest(objectToTest);
|
|
const options = getOptions(objectToTest);
|
|
|
|
bench.start();
|
|
for (let i = 0; i < n; ++i) {
|
|
try {
|
|
_validateResult = validateObject(value, 'Object', options);
|
|
} catch {
|
|
_validateResult = undefined;
|
|
}
|
|
}
|
|
bench.end(n);
|
|
|
|
assert.ok(!_validateResult);
|
|
}
|