'use strict'; // This benchmarks compiling scripts that hit the in-isolate compilation // cache (by having the same source). const common = require('../common.js'); const fs = require('fs'); const vm = require('vm'); const path = require('path'); const bench = common.createBenchmark(main, { type: ['with-dynamic-import-callback', 'without-dynamic-import-callback'], filename: ['test/fixtures/snapshot/typescript.js', 'test/fixtures/syntax/good_syntax.js'], n: [1000], }); function main({ n, type, filename }) { const scriptPath = path.resolve(__dirname, '..', '..', filename); const scriptSource = fs.readFileSync(scriptPath, 'utf8'); let script; bench.start(); const options = {}; switch (type) { case 'with-dynamic-import-callback': // Use a dummy callback for now until we really need to benchmark it. options.importModuleDynamically = async () => {}; break; case 'without-dynamic-import-callback': break; } for (let i = 0; i < n; i++) { script = new vm.Script(scriptSource, options); } bench.end(n); script.runInThisContext(); }