mirror of
https://github.com/nodejs/node.git
synced 2025-12-28 07:50:41 +00:00
PR-URL: https://github.com/nodejs/node/pull/60422 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
79 lines
1.7 KiB
JavaScript
79 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
// A console throughput benchmark.
|
|
// Uses a custom Console with null Writable streams to avoid I/O latency.
|
|
|
|
const common = require('../common.js');
|
|
const { Writable } = require('stream');
|
|
const { Console } = require('console');
|
|
|
|
const bench = common.createBenchmark(main, {
|
|
n: [2e6],
|
|
variant: ['plain', 'format', 'object', 'group', 'info', 'warn', 'error'],
|
|
});
|
|
|
|
class Null extends Writable {
|
|
_write(chunk, enc, cb) { cb(); }
|
|
}
|
|
|
|
function makeConsole() {
|
|
const dn = new Null();
|
|
return new Console({ stdout: dn, stderr: dn, ignoreErrors: true, colorMode: false });
|
|
}
|
|
|
|
function main({ n, variant }) {
|
|
const c = makeConsole();
|
|
|
|
switch (variant) {
|
|
case 'plain': {
|
|
bench.start();
|
|
for (let i = 0; i < n; i++) c.log('hello world');
|
|
bench.end(n);
|
|
break;
|
|
}
|
|
case 'format': {
|
|
bench.start();
|
|
for (let i = 0; i < n; i++) c.log('%s %d %j', 'a', 42, { x: 1 });
|
|
bench.end(n);
|
|
break;
|
|
}
|
|
case 'object': {
|
|
const obj = { a: 1, b: 2, c: 3 };
|
|
bench.start();
|
|
for (let i = 0; i < n; i++) c.log(obj);
|
|
bench.end(n);
|
|
break;
|
|
}
|
|
case 'group': {
|
|
bench.start();
|
|
for (let i = 0; i < n; i++) {
|
|
c.group('g');
|
|
c.log('x');
|
|
c.groupEnd();
|
|
}
|
|
bench.end(n);
|
|
break;
|
|
}
|
|
case 'info': {
|
|
bench.start();
|
|
for (let i = 0; i < n; i++) c.info('hello world');
|
|
bench.end(n);
|
|
break;
|
|
}
|
|
case 'warn': {
|
|
bench.start();
|
|
for (let i = 0; i < n; i++) c.warn('hello world');
|
|
bench.end(n);
|
|
break;
|
|
}
|
|
case 'error': {
|
|
bench.start();
|
|
for (let i = 0; i < n; i++) c.error('hello world');
|
|
bench.end(n);
|
|
break;
|
|
}
|
|
default:
|
|
throw new Error('unknown variant');
|
|
}
|
|
}
|