Skip to content

Commit

Permalink
test: added fs benchmark test
Browse files Browse the repository at this point in the history
Modified fs benchmarks to use more unique args to avoid collision.

PR-URL: #16049
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
  • Loading branch information
ctdio authored and Trott committed Oct 11, 2017
1 parent 7525df7 commit 58d26e2
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 30 deletions.
10 changes: 5 additions & 5 deletions benchmark/fs/bench-realpath.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,21 @@ const relative_path = path.relative(__dirname, '../../lib/');

const bench = common.createBenchmark(main, {
n: [1e4],
type: ['relative', 'resolved'],
pathType: ['relative', 'resolved'],
});


function main(conf) {
const n = conf.n >>> 0;
const type = conf.type;
const pathType = conf.pathType;

bench.start();
if (type === 'relative')
if (pathType === 'relative')
relativePath(n);
else if (type === 'resolved')
else if (pathType === 'resolved')
resolvedPath(n);
else
throw new Error(`unknown "type": ${type}`);
throw new Error(`unknown "pathType": ${pathType}`);
}

function relativePath(n) {
Expand Down
10 changes: 5 additions & 5 deletions benchmark/fs/bench-realpathSync.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,21 @@ const relative_path = path.relative(__dirname, '../../lib/');

const bench = common.createBenchmark(main, {
n: [1e4],
type: ['relative', 'resolved'],
pathType: ['relative', 'resolved'],
});


function main(conf) {
const n = conf.n >>> 0;
const type = conf.type;
const pathType = conf.pathType;

bench.start();
if (type === 'relative')
if (pathType === 'relative')
relativePath(n);
else if (type === 'resolved')
else if (pathType === 'resolved')
resolvedPath(n);
else
throw new Error(`unknown "type": ${type}`);
throw new Error(`unknown "pathType": ${pathType}`);
bench.end(n);
}

Expand Down
10 changes: 5 additions & 5 deletions benchmark/fs/bench-stat.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ const fs = require('fs');

const bench = common.createBenchmark(main, {
n: [20e4],
kind: ['fstat', 'lstat', 'stat']
statType: ['fstat', 'lstat', 'stat']
});


function main(conf) {
const n = conf.n >>> 0;
const kind = conf.kind;
const statType = conf.statType;
var arg;
if (kind === 'fstat')
if (statType === 'fstat')
arg = fs.openSync(__filename, 'r');
else
arg = __filename;
Expand All @@ -22,12 +22,12 @@ function main(conf) {
(function r(cntr, fn) {
if (cntr-- <= 0) {
bench.end(n);
if (kind === 'fstat')
if (statType === 'fstat')
fs.closeSync(arg);
return;
}
fn(arg, function() {
r(cntr, fn);
});
}(n, fs[kind]));
}(n, fs[statType]));
}
12 changes: 7 additions & 5 deletions benchmark/fs/bench-statSync.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,24 @@ const fs = require('fs');

const bench = common.createBenchmark(main, {
n: [1e6],
kind: ['fstatSync', 'lstatSync', 'statSync']
statSyncType: ['fstatSync', 'lstatSync', 'statSync']
});


function main(conf) {
const n = conf.n >>> 0;
const kind = conf.kind;
const arg = (kind === 'fstatSync' ? fs.openSync(__filename, 'r') : __dirname);
const fn = fs[conf.kind];
const statSyncType = conf.statSyncType;
const arg = (statSyncType === 'fstatSync' ?
fs.openSync(__filename, 'r') :
__dirname);
const fn = fs[statSyncType];

bench.start();
for (var i = 0; i < n; i++) {
fn(arg);
}
bench.end(n);

if (kind === 'fstat')
if (statSyncType === 'fstat')
fs.closeSync(arg);
}
13 changes: 7 additions & 6 deletions benchmark/fs/read-stream-throughput.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,22 @@ const path = require('path');
const common = require('../common.js');
const filename = path.resolve(__dirname, '.removeme-benchmark-garbage');
const fs = require('fs');
const filesize = 1000 * 1024 * 1024;
const assert = require('assert');

var type, encoding, size;
let encodingType, encoding, size, filesize;

const bench = common.createBenchmark(main, {
type: ['buf', 'asc', 'utf'],
encodingType: ['buf', 'asc', 'utf'],
filesize: [1000 * 1024 * 1024],
size: [1024, 4096, 65535, 1024 * 1024]
});

function main(conf) {
type = conf.type;
encodingType = conf.encodingType;
size = +conf.size;
filesize = conf.filesize;

switch (type) {
switch (encodingType) {
case 'buf':
encoding = null;
break;
Expand All @@ -30,7 +31,7 @@ function main(conf) {
encoding = 'utf8';
break;
default:
throw new Error('invalid type');
throw new Error(`invalid encodingType: ${encodingType}`);
}

makeFile(runTest);
Expand Down
8 changes: 4 additions & 4 deletions benchmark/fs/write-stream-throughput.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,18 @@ const fs = require('fs');

const bench = common.createBenchmark(main, {
dur: [5],
type: ['buf', 'asc', 'utf'],
encodingType: ['buf', 'asc', 'utf'],
size: [2, 1024, 65535, 1024 * 1024]
});

function main(conf) {
const dur = +conf.dur;
const type = conf.type;
const encodingType = conf.encodingType;
const size = +conf.size;
var encoding;

var chunk;
switch (type) {
switch (encodingType) {
case 'buf':
chunk = Buffer.alloc(size, 'b');
break;
Expand All @@ -32,7 +32,7 @@ function main(conf) {
encoding = 'utf8';
break;
default:
throw new Error('invalid type');
throw new Error(`invalid encodingType: ${encodingType}`);
}

try { fs.unlinkSync(filename); } catch (e) {}
Expand Down
17 changes: 17 additions & 0 deletions test/parallel/test-benchmark-fs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
'use strict';

require('../common');
const runBenchmark = require('../common/benchmark');

runBenchmark('fs', [
'n=1',
'size=1',
'dur=1',
'len=1024',
'concurrent=1',
'pathType=relative',
'statType=fstat',
'statSyncType=fstatSync',
'encodingType=buf',
'filesize=1024'
]);

0 comments on commit 58d26e2

Please sign in to comment.