benchmark: refactor

PR-URL: https://github.com/nodejs/node/pull/18320
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Ruben Bridgewater 2018-01-23 13:19:30 +01:00
parent c713f079f1
commit 1b6cb94761
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762
17 changed files with 40 additions and 83 deletions

View File

@ -22,22 +22,23 @@ function endAfterGC(n) {
}
function main({ n, method }) {
var i;
switch (method) {
case 'trackingEnabled':
bench.start();
for (let i = 0; i < n; i++) {
for (i = 0; i < n; i++) {
new AsyncResource('foobar');
}
endAfterGC(n);
break;
case 'trackingDisabled':
bench.start();
for (let i = 0; i < n; i++) {
for (i = 0; i < n; i++) {
new AsyncResource('foobar', { requireManualDestroy: true });
}
endAfterGC(n);
break;
default:
throw new Error('Unsupported method');
throw new Error(`Unsupported method "${method}"`);
}
}

View File

@ -15,10 +15,11 @@ const noop = () => {};
function main({ n, port, address }) {
port = port === 'true' ? 0 : undefined;
address = address === 'true' ? '0.0.0.0' : undefined;
var i;
if (port !== undefined && address !== undefined) {
bench.start();
for (let i = 0; i < n; i++) {
for (i = 0; i < n; i++) {
dgram.createSocket('udp4').bind(port, address)
.on('error', noop)
.unref();
@ -26,7 +27,7 @@ function main({ n, port, address }) {
bench.end(n);
} else if (port !== undefined) {
bench.start();
for (let i = 0; i < n; i++) {
for (i = 0; i < n; i++) {
dgram.createSocket('udp4')
.bind(port)
.on('error', noop)
@ -35,7 +36,7 @@ function main({ n, port, address }) {
bench.end(n);
} else if (port === undefined && address === undefined) {
bench.start();
for (let i = 0; i < n; i++) {
for (i = 0; i < n; i++) {
dgram.createSocket('udp4')
.bind()
.on('error', noop)

View File

@ -28,15 +28,6 @@ function main({ n, args }) {
bench.end(n);
}
function fn(a, b, c) {
if (!a)
a = 1;
if (!b)
b = 2;
if (!c)
c = 3;
function fn(a = 1, b = 2, c = 3) {
return a + b + c;
}

View File

@ -16,10 +16,8 @@ function main({ n, pathType }) {
bench.start();
if (pathType === 'relative')
relativePath(n);
else if (pathType === 'resolved')
resolvedPath(n);
else
throw new Error(`unknown "pathType": ${pathType}`);
resolvedPath(n);
}
function relativePath(n) {

View File

@ -15,24 +15,10 @@ const bench = common.createBenchmark(main, {
function main({ n, pathType }) {
const path = pathType === 'relative' ? relative_path : resolved_path;
bench.start();
if (pathType === 'relative')
relativePath(n);
else if (pathType === 'resolved')
resolvedPath(n);
else
throw new Error(`unknown "pathType": ${pathType}`);
for (var i = 0; i < n; i++) {
fs.realpathSync(path);
}
bench.end(n);
}
function relativePath(n) {
for (var i = 0; i < n; i++) {
fs.realpathSync(relative_path);
}
}
function resolvedPath(n) {
for (var i = 0; i < n; i++) {
fs.realpathSync(resolved_path);
}
}

View File

@ -36,7 +36,6 @@ function main({ dur, encodingType, size }) {
try { fs.unlinkSync(filename); } catch (e) {}
var started = false;
var ending = false;
var ended = false;
var f = fs.createWriteStream(filename);
@ -52,15 +51,9 @@ function main({ dur, encodingType, size }) {
function write() {
// don't try to write after we end, even if a 'drain' event comes.
// v0.8 streams are so sloppy!
if (ending)
return;
if (!started) {
started = true;
setTimeout(function() {
ending = true;
f.end();
}, dur * 1000);
bench.start();

View File

@ -12,7 +12,6 @@ function main({ n }) {
const FreeList = require('internal/freelist');
const poolSize = 1000;
const list = new FreeList('test', poolSize, Object);
var i;
var j;
const used = [];
@ -23,7 +22,7 @@ function main({ n }) {
bench.start();
for (i = 0; i < n; i++) {
for (var i = 0; i < n; i++) {
// Return all the items to the pool
for (j = 0; j < poolSize; j++) {
list.free(used[j]);

View File

@ -32,11 +32,9 @@ const bench = common.createBenchmark(main, {
});
function main({ millions, type }) {
const n = millions * 1e6;
const fn = type === 'cxx' ? cxx : js;
bench.start();
for (var i = 0; i < n; i++) {
for (var i = 0; i < millions * 1e6; i++) {
fn();
}
bench.end(millions);

View File

@ -78,6 +78,6 @@ function main({ millions, method }) {
runSymbol(n);
break;
default:
throw new Error('Unexpected method');
throw new Error(`Unexpected method "${method}"`);
}
}

View File

@ -55,9 +55,8 @@ function runPunycode(n, val) {
}
function runICU(n, val) {
var i = 0;
bench.start();
for (; i < n; i++)
for (var i = 0; i < n; i++)
usingICU(val);
bench.end(n);
}
@ -76,6 +75,6 @@ function main({ n, val, method }) {
}
// fallthrough
default:
throw new Error('Unexpected method');
throw new Error(`Unexpected method "${method}"`);
}
}

View File

@ -13,12 +13,10 @@ const bench = common.createBenchmark(main, {
});
function main({ thousands, fullPath, useCache }) {
const n = thousands * 1e3;
tmpdir.refresh();
try { fs.mkdirSync(benchmarkDirectory); } catch (e) {}
for (var i = 0; i <= n; i++) {
for (var i = 0; i <= thousands * 1e3; i++) {
fs.mkdirSync(`${benchmarkDirectory}${i}`);
fs.writeFileSync(
`${benchmarkDirectory}${i}/package.json`,
@ -31,37 +29,37 @@ function main({ thousands, fullPath, useCache }) {
}
if (fullPath === 'true')
measureFull(n, useCache === 'true');
measureFull(thousands, useCache === 'true');
else
measureDir(n, useCache === 'true');
measureDir(thousands, useCache === 'true');
tmpdir.refresh();
}
function measureFull(n, useCache) {
function measureFull(thousands, useCache) {
var i;
if (useCache) {
for (i = 0; i <= n; i++) {
for (i = 0; i <= thousands * 1e3; i++) {
require(`${benchmarkDirectory}${i}/index.js`);
}
}
bench.start();
for (i = 0; i <= n; i++) {
for (i = 0; i <= thousands * 1e3; i++) {
require(`${benchmarkDirectory}${i}/index.js`);
}
bench.end(n / 1e3);
bench.end(thousands);
}
function measureDir(n, useCache) {
function measureDir(thousands, useCache) {
var i;
if (useCache) {
for (i = 0; i <= n; i++) {
for (i = 0; i <= thousands * 1e3; i++) {
require(`${benchmarkDirectory}${i}`);
}
}
bench.start();
for (i = 0; i <= n; i++) {
for (i = 0; i <= thousands * 1e3; i++) {
require(`${benchmarkDirectory}${i}`);
}
bench.end(n / 1e3);
bench.end(thousands);
}

View File

@ -8,14 +8,15 @@ const bench = common.createBenchmark(main, {
});
function main({ n }) {
var i = 0;
const input = ['ABC', 'XYZ123', 'FOO'];
var m = {};
// First call dominates results
if (n > 1) {
tls.convertNPNProtocols(['ABC', 'XYZ123', 'FOO'], m);
tls.convertNPNProtocols(input, m);
m = {};
}
bench.start();
for (; i < n; i++) tls.convertNPNProtocols(['ABC', 'XYZ123', 'FOO'], m);
for (var i = 0; i < n; i++)
tls.convertNPNProtocols(input, m);
bench.end(n);
}

View File

@ -22,9 +22,7 @@ const bench = common.createBenchmark(main, {
function main({ n, type }) {
// For testing, if supplied with an empty type, default to string.
type = type || 'string';
const [first, second] = inputs[type];
const [first, second] = inputs[type || 'string'];
bench.start();
for (var i = 0; i < n; i++) {

View File

@ -18,14 +18,13 @@ function main({ n, len, type }) {
var arr = Array(len);
var i, opts;
// For testing, if supplied with an empty type, default to denseArray.
type = type || 'denseArray';
switch (type) {
case 'denseArray_showHidden':
opts = { showHidden: true };
arr = arr.fill('denseArray');
break;
// For testing, if supplied with an empty type, default to denseArray.
case '':
case 'denseArray':
arr = arr.fill('denseArray');
break;

View File

@ -12,9 +12,8 @@ const bench = common.createBenchmark(main, {
});
function main({ method, n }) {
var i = 0;
bench.start();
for (; i < n; i++)
for (var i = 0; i < n; i++)
v8[method]();
bench.end(n);
}

View File

@ -17,12 +17,10 @@ function main({ n, breakOnSigint, withSigintListener }) {
if (withSigintListener)
process.on('SIGINT', () => {});
var i = 0;
const contextifiedSandbox = vm.createContext();
bench.start();
for (; i < n; i++)
for (var i = 0; i < n; i++)
vm.runInContext('0', contextifiedSandbox, options);
bench.end(n);
}

View File

@ -17,10 +17,8 @@ function main({ n, breakOnSigint, withSigintListener }) {
if (withSigintListener)
process.on('SIGINT', () => {});
var i = 0;
bench.start();
for (; i < n; i++)
for (var i = 0; i < n; i++)
vm.runInThisContext('0', options);
bench.end(n);
}