| '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 fixtures = require('../../test/common/fixtures.js'); |
| const scriptPath = fixtures.path('snapshot', 'typescript.js'); |
| |
| const bench = common.createBenchmark(main, { |
| type: ['with-dynamic-import-callback', 'without-dynamic-import-callback'], |
| n: [100], |
| }); |
| |
| const scriptSource = fs.readFileSync(scriptPath, 'utf8'); |
| |
| function main({ n, type }) { |
| 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(); |
| } |