node/benchmark/path/extname-posix.js
Ruben Bridgewater 038a1a489d
benchmark: refactor path benchmarks
So far the benchmarks created a highly specialized function which
would inline exactly to the input. This changes it to provide a
more realistic view to actual input by changing the input on each
iteration. That prevents the function to be to specific.

It also reduces the number of iterations the benchmarks are run to
reduce the overall runtime. A microbenchmark should already show a
significant difference with lower iterations, otherwise the
significance for real world applications is only limited.

PR-URL: https://github.com/nodejs/node/pull/26359
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
2019-03-05 01:22:22 +01:00

28 lines
532 B
JavaScript

'use strict';
const common = require('../common.js');
const { posix } = require('path');
const bench = common.createBenchmark(main, {
path: [
'',
'/',
'/foo',
'foo/.bar.baz',
'index.html',
'index',
'foo/bar/..baz.quux',
'foo/bar/...baz.quux',
'/foo/bar/baz/asdf/quux',
'/foo/bar/baz/asdf/quux.foobarbazasdfquux',
],
n: [1e5]
});
function main({ n, path }) {
bench.start();
for (var i = 0; i < n; i++) {
posix.extname(i % 3 === 0 ? `${path}${i}` : path);
}
bench.end(n);
}