mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
benchmark: add a benchmark for defaultResolve
PR-URL: https://github.com/nodejs/node/pull/47543 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com> Reviewed-By: Jacob Smith <jacob@frende.me>
This commit is contained in:
51
benchmark/esm/esm-loader-defaultResolve.js
Normal file
51
benchmark/esm/esm-loader-defaultResolve.js
Normal file
@@ -0,0 +1,51 @@
|
||||
// Tests the impact on eager operations required for policies affecting
|
||||
// general startup, does not test lazy operations
|
||||
'use strict';
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
const common = require('../common.js');
|
||||
|
||||
const tmpdir = require('../../test/common/tmpdir.js');
|
||||
const { pathToFileURL } = require('node:url');
|
||||
|
||||
const benchmarkDirectory =
|
||||
path.resolve(tmpdir.path, 'benchmark-import-meta-resolve');
|
||||
|
||||
const parentURL = pathToFileURL(path.join(benchmarkDirectory, 'entry-point.js'));
|
||||
|
||||
const configs = {
|
||||
n: [1e3],
|
||||
specifier: [
|
||||
'./relative-existing.js',
|
||||
'./relative-nonexistent.js',
|
||||
'unprefixed-existing',
|
||||
'unprefixed-nonexistent',
|
||||
'node:prefixed-nonexistent',
|
||||
'node:os',
|
||||
],
|
||||
};
|
||||
|
||||
const options = {
|
||||
flags: ['--expose-internals'],
|
||||
};
|
||||
|
||||
const bench = common.createBenchmark(main, configs, options);
|
||||
|
||||
function main(conf) {
|
||||
const { defaultResolve } = require('internal/modules/esm/resolve');
|
||||
tmpdir.refresh();
|
||||
|
||||
fs.mkdirSync(path.join(benchmarkDirectory, 'node_modules', 'unprefixed-existing'), { recursive: true });
|
||||
fs.writeFileSync(path.join(benchmarkDirectory, 'node_modules', 'unprefixed-existing', 'index.js'), '\n');
|
||||
fs.writeFileSync(path.join(benchmarkDirectory, 'relative-existing.js'), '\n');
|
||||
|
||||
bench.start();
|
||||
|
||||
for (let i = 0; i < conf.n; i++) {
|
||||
try {
|
||||
defaultResolve(conf.specifier, { parentURL });
|
||||
} catch { /* empty */ }
|
||||
}
|
||||
|
||||
bench.end(conf.n);
|
||||
}
|
||||
Reference in New Issue
Block a user