diff --git a/benchmark/esm/import-meta.js b/benchmark/esm/import-meta.js index 0e56d8a34a3..1f405a59a0a 100644 --- a/benchmark/esm/import-meta.js +++ b/benchmark/esm/import-meta.js @@ -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; + } }); } diff --git a/benchmark/fixtures/import-meta-dirname-and-filename.mjs b/benchmark/fixtures/import-meta-dirname-and-filename.mjs index a1028d57afd..1f92bc85f52 100644 --- a/benchmark/fixtures/import-meta-dirname-and-filename.mjs +++ b/benchmark/fixtures/import-meta-dirname-and-filename.mjs @@ -1,2 +1 @@ -export const dirname = import.meta.dirname; -export const filename = import.meta.filename; +export default () => [ import.meta.dirname, import.meta.filename ]; diff --git a/benchmark/fixtures/import-meta-dirname.mjs b/benchmark/fixtures/import-meta-dirname.mjs index 8429b1f3cf8..f8ee699d314 100644 --- a/benchmark/fixtures/import-meta-dirname.mjs +++ b/benchmark/fixtures/import-meta-dirname.mjs @@ -1 +1 @@ -export const dirname = import.meta.dirname; +export default () => import.meta.dirname; diff --git a/benchmark/fixtures/import-meta-filename.mjs b/benchmark/fixtures/import-meta-filename.mjs index 73e495e19b7..ecec26d09c7 100644 --- a/benchmark/fixtures/import-meta-filename.mjs +++ b/benchmark/fixtures/import-meta-filename.mjs @@ -1 +1 @@ -export const filename = import.meta.filename; +export default () => import.meta.filename; diff --git a/benchmark/fixtures/import-meta-url.mjs b/benchmark/fixtures/import-meta-url.mjs new file mode 100644 index 00000000000..a924853bcc7 --- /dev/null +++ b/benchmark/fixtures/import-meta-url.mjs @@ -0,0 +1 @@ +export default () => import.meta.url;