benchmark: add vm.SourceTextModule benchmark · nodejs/node@1bbcdf9 · GitHub
Skip to content

Commit 1bbcdf9

Browse files
joyeecheungaduh95
authored andcommitted
benchmark: add vm.SourceTextModule benchmark
PR-URL: #59396 Refs: https://chromium-review.googlesource.com/c/v8/v8/+/6804466 Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
1 parent 21bcd0e commit 1bbcdf9

3 files changed

Lines changed: 153 additions & 0 deletions

File tree

benchmark/esm/import-esm-reload.js

Lines changed: 37 additions & 0 deletions
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
'use strict';
2+
3+
const vm = require('vm');
4+
const common = require('../common.js');
5+
const assert = require('assert');
6+
7+
const bench = common.createBenchmark(main, {
8+
stage: ['all', 'instantiate', 'evaluate'],
9+
n: [1000],
10+
}, {
11+
flags: ['--experimental-vm-modules'],
12+
});
13+
14+
function main({ stage, n }) {
15+
const arr = [new vm.SourceTextModule(`
16+
export const value = 42;
17+
`)];
18+
19+
if (stage === 'all') {
20+
bench.start();
21+
}
22+
23+
for (let i = 0; i < n; i++) {
24+
const m = new vm.SourceTextModule(`
25+
export { value } from 'mod${i}';
26+
`);
27+
arr.push(m);
28+
m.linkRequests([arr[i]]);
29+
}
30+
31+
if (stage === 'instantiate') {
32+
bench.start();
33+
}
34+
arr[n].instantiate();
35+
if (stage === 'instantiate') {
36+
bench.end(n);
37+
}
38+
39+
if (stage === 'evaluate') {
40+
bench.start();
41+
}
42+
arr[n].evaluate();
43+
if (stage === 'evaluate' || stage === 'all') {
44+
bench.end(n);
45+
}
46+
47+
assert.strictEqual(arr[n].namespace.value, 42);
48+
}
Lines changed: 68 additions & 0 deletions

0 commit comments

Comments
 (0)