benchmark: focus on import.meta intialization in import-meta benchmark · nodejs/node@d5158a0
@@ -10,28 +10,44 @@ const bench = common.createBenchmark(main, {
1010'dirname-and-filename',
1111'dirname',
1212'filename',
13+'url',
1314],
1415});
151616-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 = [];
1919for (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}
2222return array;
2323}
24242525function 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);
302931-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+}
3336bench.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}