bench: add bench for fs.realpath() fix

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: https://github.com/nodejs/node/pull/7899
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
This commit is contained in:
Trevor Norris 2016-07-14 11:57:26 -06:00 committed by Bartosz Sosnowski
parent 08996fde3c
commit b9832eb3fe
2 changed files with 85 additions and 0 deletions

View File

@ -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));
}

View File

@ -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);
}
}