mirror of
https://github.com/nodejs/node.git
synced 2025-12-27 23:41:14 +00:00
benchmark: focus on import.meta intialization in import-meta benchmark
Instead of measuring the performance of the entire module initialization, focus only on the import.meta initialization. PR-URL: https://github.com/nodejs/node/pull/60603 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
This commit is contained in:
parent
1d6a62662c
commit
53ee03868f
@ -10,28 +10,44 @@ const bench = common.createBenchmark(main, {
|
||||
'dirname-and-filename',
|
||||
'dirname',
|
||||
'filename',
|
||||
'url',
|
||||
],
|
||||
});
|
||||
|
||||
const fixtureDir = path.resolve(__filename, '../../fixtures');
|
||||
const fixtureDirURL = pathToFileURL(fixtureDir);
|
||||
async function load(array, n, valuesToRead) {
|
||||
async function load(n, fixtureFileURL) {
|
||||
const array = [];
|
||||
for (let i = 0; i < n; i++) {
|
||||
array[i] = await import(`${fixtureDirURL}/import-meta-${valuesToRead}.mjs?i=${i}`);
|
||||
array[i] = await import(`${fixtureFileURL}?i=${i}`);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
function main({ n, valuesToRead }) {
|
||||
const array = [];
|
||||
for (let i = 0; i < n; ++i) {
|
||||
array.push({ dirname: '', filename: '', i: 0 });
|
||||
}
|
||||
const fixtureDir = path.resolve(__filename, '../../fixtures');
|
||||
const fixtureFile = path.join(fixtureDir, `import-meta-${valuesToRead}.mjs`);
|
||||
const fixtureFileURL = pathToFileURL(fixtureFile);
|
||||
|
||||
bench.start();
|
||||
load(array, n, valuesToRead).then((arr) => {
|
||||
load(n, fixtureFileURL).then((array) => {
|
||||
const results = new Array(n);
|
||||
bench.start();
|
||||
for (let i = 0; i < n; i++) {
|
||||
results[i] = array[i].default();
|
||||
}
|
||||
bench.end(n);
|
||||
if (valuesToRead.includes('dirname')) assert.strictEqual(arr[n - 1].dirname, fixtureDir);
|
||||
if (valuesToRead.includes('filename')) assert.strictEqual(arr[n - 1].filename, path.join(fixtureDir, `import-meta-${valuesToRead}.mjs`));
|
||||
|
||||
switch (valuesToRead) {
|
||||
case 'dirname-and-filename':
|
||||
assert.deepStrictEqual(results[n - 1], [fixtureDir, fixtureFile]);
|
||||
break;
|
||||
case 'dirname':
|
||||
assert.strictEqual(results[n - 1], fixtureDir);
|
||||
break;
|
||||
case 'filename':
|
||||
assert.strictEqual(results[n - 1], fixtureFile);
|
||||
break;
|
||||
case 'url':
|
||||
assert.strictEqual(results[n - 1], `${fixtureFileURL}?i=${n - 1}`);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -1,2 +1 @@
|
||||
export const dirname = import.meta.dirname;
|
||||
export const filename = import.meta.filename;
|
||||
export default () => [ import.meta.dirname, import.meta.filename ];
|
||||
|
||||
@ -1 +1 @@
|
||||
export const dirname = import.meta.dirname;
|
||||
export default () => import.meta.dirname;
|
||||
|
||||
@ -1 +1 @@
|
||||
export const filename = import.meta.filename;
|
||||
export default () => import.meta.filename;
|
||||
|
||||
1
benchmark/fixtures/import-meta-url.mjs
Normal file
1
benchmark/fixtures/import-meta-url.mjs
Normal file
@ -0,0 +1 @@
|
||||
export default () => import.meta.url;
|
||||
Loading…
Reference in New Issue
Block a user