Skip to content

Commit d5158a0

Browse files
joyeecheungaduh95
authored andcommitted
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: #60603 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
1 parent 815edb0 commit d5158a0

File tree

5 files changed

+32
-16
lines changed

5 files changed

+32
-16
lines changed

β€Žbenchmark/esm/import-meta.jsβ€Ž

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,44 @@ const bench = common.createBenchmark(main, {
1010
'dirname-and-filename',
1111
'dirname',
1212
'filename',
13+
'url',
1314
],
1415
});
1516

16-
const fixtureDir = path.resolve(__filename, '../../fixtures');
17-
const fixtureDirURL = pathToFileURL(fixtureDir);
18-
async function load(array, n, valuesToRead) {
17+
async function load(n, fixtureFileURL) {
18+
const array = [];
1919
for (let i = 0; i < n; i++) {
20-
array[i] = await import(`${fixtureDirURL}/import-meta-${valuesToRead}.mjs?i=${i}`);
20+
array[i] = await import(`${fixtureFileURL}?i=${i}`);
2121
}
2222
return array;
2323
}
2424

2525
function main({ n, valuesToRead }) {
26-
const array = [];
27-
for (let i = 0; i < n; ++i) {
28-
array.push({ dirname: '', filename: '', i: 0 });
29-
}
26+
const fixtureDir = path.resolve(__filename, '../../fixtures');
27+
const fixtureFile = path.join(fixtureDir, `import-meta-${valuesToRead}.mjs`);
28+
const fixtureFileURL = pathToFileURL(fixtureFile);
3029

31-
bench.start();
32-
load(array, n, valuesToRead).then((arr) => {
30+
load(n, fixtureFileURL).then((array) => {
31+
const results = new Array(n);
32+
bench.start();
33+
for (let i = 0; i < n; i++) {
34+
results[i] = array[i].default();
35+
}
3336
bench.end(n);
34-
if (valuesToRead.includes('dirname')) assert.strictEqual(arr[n - 1].dirname, fixtureDir);
35-
if (valuesToRead.includes('filename')) assert.strictEqual(arr[n - 1].filename, path.join(fixtureDir, `import-meta-${valuesToRead}.mjs`));
37+
38+
switch (valuesToRead) {
39+
case 'dirname-and-filename':
40+
assert.deepStrictEqual(results[n - 1], [fixtureDir, fixtureFile]);
41+
break;
42+
case 'dirname':
43+
assert.strictEqual(results[n - 1], fixtureDir);
44+
break;
45+
case 'filename':
46+
assert.strictEqual(results[n - 1], fixtureFile);
47+
break;
48+
case 'url':
49+
assert.strictEqual(results[n - 1], `${fixtureFileURL}?i=${n - 1}`);
50+
break;
51+
}
3652
});
3753
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
export const dirname = import.meta.dirname;
2-
export const filename = import.meta.filename;
1+
export default () => [ import.meta.dirname, import.meta.filename ];
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const dirname = import.meta.dirname;
1+
export default () => import.meta.dirname;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const filename = import.meta.filename;
1+
export default () => import.meta.filename;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default () => import.meta.url;

0 commit comments

Comments
Β (0)