Skip to content

Commit

Permalink
bench: add bench for fs.realpath() fix
Browse files Browse the repository at this point in the history
The benchmarks included also work for the previous JS
implementation of fs.realpath(). In case the new implementation of
realpath() needs to be reverted, we want these changes to stick around.

PR-URL: #7899
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
  • Loading branch information
trevnorris authored and cjihrig committed Aug 15, 2016
1 parent 18a3064 commit f6713bf
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 0 deletions.
46 changes: 46 additions & 0 deletions benchmark/fs/bench-realpath.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
'use strict';

const common = require('../common');
const fs = require('fs');
const path = require('path');
const resolved_path = path.resolve(__dirname, '../../lib/');
const relative_path = path.relative(__dirname, '../../lib/');

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


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

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

function relativePath(n) {
(function r(cntr) {
if (--cntr <= 0)
return bench.end(n);
fs.realpath(relative_path, function() {
r(cntr);
});
}(n));
}

function resolvedPath(n) {
(function r(cntr) {
if (--cntr <= 0)
return bench.end(n);
fs.realpath(resolved_path, function() {
r(cntr);
});
}(n));
}
39 changes: 39 additions & 0 deletions benchmark/fs/bench-realpathSync.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
'use strict';

const common = require('../common');
const fs = require('fs');
const path = require('path');
const resolved_path = path.resolve(__dirname, '../../lib/');
const relative_path = path.relative(__dirname, '../../lib/');

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


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

bench.start();
if (type === 'relative')
relativePath(n);
else if (type === 'resolved')
resolvedPath(n);
else
throw new Error('unknown "type": ' + type);
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);
}
}

0 comments on commit f6713bf

Please sign in to comment.