| 'use strict'; |
| const fs = require('fs'); |
| const path = require('path'); |
| const common = require('../common.js'); |
| const { strictEqual } = require('assert'); |
| |
| const tmpdir = require('../../test/common/tmpdir'); |
| const benchmarkDirectory = |
| path.resolve(tmpdir.path, 'benchmark-esm-parse'); |
| |
| const bench = common.createBenchmark(main, { |
| n: [1e2] |
| }); |
| |
| async function main({ n }) { |
| tmpdir.refresh(); |
| |
| fs.mkdirSync(benchmarkDirectory); |
| |
| let sampleSource = 'try {\n'; |
| for (let i = 0; i < 1000; i++) { |
| sampleSource += 'sample.js(() => file = /test/);\n'; |
| } |
| sampleSource += '} catch {}\nexports.p = 5;\n'; |
| |
| for (let i = 0; i < n; i++) { |
| const sampleFile = path.join(benchmarkDirectory, `sample${i}.js`); |
| fs.writeFileSync(sampleFile, sampleSource); |
| } |
| |
| bench.start(); |
| for (let i = 0; i < n; i++) { |
| const sampleFile = path.join(benchmarkDirectory, `sample${i}.js`); |
| const m = await import('file:' + sampleFile); |
| strictEqual(m.p, 5); |
| } |
| bench.end(n); |
| |
| tmpdir.refresh(); |
| } |