mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
d545c948c2
PR-URL: https://github.com/nodejs/node/pull/15726 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Benedikt Meurer <benedikt.meurer@gmail.com> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com>
103 lines
2.4 KiB
JavaScript
103 lines
2.4 KiB
JavaScript
'use strict';
|
|
const util = require('util');
|
|
|
|
const common = require('../common.js');
|
|
|
|
const opts = {
|
|
showHidden: { showHidden: true },
|
|
colors: { colors: true },
|
|
none: undefined
|
|
};
|
|
const bench = common.createBenchmark(main, {
|
|
n: [2e6],
|
|
method: [
|
|
'Object',
|
|
'Object_empty',
|
|
'Object_deep_ln',
|
|
'String',
|
|
'String_complex',
|
|
'String_boxed',
|
|
'Date',
|
|
'Set',
|
|
'Error',
|
|
'Array',
|
|
'TypedArray',
|
|
'TypedArray_extra',
|
|
'Number'
|
|
],
|
|
option: Object.keys(opts)
|
|
});
|
|
|
|
function benchmark(n, obj, options) {
|
|
bench.start();
|
|
for (var i = 0; i < n; i += 1) {
|
|
util.inspect(obj, options);
|
|
}
|
|
bench.end(n);
|
|
}
|
|
|
|
function main({ method, n, option }) {
|
|
var obj;
|
|
const options = opts[option];
|
|
switch (method) {
|
|
case 'Object':
|
|
benchmark(n, { a: 'a', b: 'b', c: 'c', d: 'd' }, options);
|
|
break;
|
|
case 'Object_empty':
|
|
benchmark(n, {}, options);
|
|
break;
|
|
case 'Object_deep_ln':
|
|
if (options)
|
|
options.depth = Infinity;
|
|
obj = { first:
|
|
{ second:
|
|
{ third:
|
|
{ a: 'first',
|
|
b: 'second',
|
|
c: 'third',
|
|
d: 'fourth',
|
|
e: 'fifth',
|
|
f: 'sixth',
|
|
g: 'seventh' } } } };
|
|
benchmark(n, obj, options || { depth: Infinity });
|
|
break;
|
|
case 'String':
|
|
benchmark(n, 'Simple string', options);
|
|
break;
|
|
case 'String_complex':
|
|
benchmark(n, 'This string\nhas to be\tescaped!', options);
|
|
break;
|
|
case 'String_boxed':
|
|
benchmark(n, new String('string'), options);
|
|
break;
|
|
case 'Date':
|
|
benchmark(n, new Date(), options);
|
|
break;
|
|
case 'Set':
|
|
obj = new Set([5, 3]);
|
|
benchmark(n, obj, options);
|
|
break;
|
|
case 'Error':
|
|
benchmark(n, new Error('error'), options);
|
|
break;
|
|
case 'Array':
|
|
benchmark(n, Array(20).fill().map((_, i) => i), options);
|
|
break;
|
|
case 'TypedArray':
|
|
obj = new Uint8Array(Array(50).fill().map((_, i) => i));
|
|
benchmark(n, obj, options);
|
|
break;
|
|
case 'TypedArray_extra':
|
|
obj = new Uint8Array(Array(50).fill().map((_, i) => i));
|
|
obj.foo = 'bar';
|
|
obj[Symbol('baz')] = 5;
|
|
benchmark(n, obj, options);
|
|
break;
|
|
case 'Number':
|
|
benchmark(n, 0, options);
|
|
break;
|
|
default:
|
|
throw new Error(`Unsupported method "${method}"`);
|
|
}
|
|
}
|