Skip to content

Commit 97b671f

Browse files
committed
test(napi/parser): load internal modules with require in benchmarks (#11865)
Improve raw transfer benchmarks. Use `require` to load internal modules instead of `import`. `oxc-parser` uses `require` internally, so using `import` here was resulting in a lot of code being loaded and instantiated twice.
1 parent 0bf7815 commit 97b671f

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

napi/parser/bench.bench.mjs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
import { writeFile } from 'fs/promises';
2-
import { join as pathJoin } from 'path';
1+
import { writeFile } from 'node:fs/promises';
2+
import { createRequire } from 'node:module';
3+
import { join as pathJoin } from 'node:path';
34
import { bench, describe } from 'vitest';
45
import bindings from './bindings.js';
5-
import deserializeJS from './generated/deserialize/js.js';
6-
import deserializeTS from './generated/deserialize/ts.js';
76
import { experimentalGetLazyVisitor, parseAsync, parseSync } from './index.js';
8-
import { isJsAst, prepareRaw, returnBufferToCache } from './raw-transfer/common.js';
7+
8+
// Use `require` not `import` to load these internal modules, to avoid evaluating the modules
9+
// twice as ESM and CJS
10+
const require = createRequire(import.meta.filename);
11+
const deserializeJS = require('./generated/deserialize/js.js');
12+
const deserializeTS = require('./generated/deserialize/ts.js');
13+
const { isJsAst, prepareRaw, returnBufferToCache } = require('./raw-transfer/common.js');
914

1015
// Same fixtures as used in Rust parser benchmarks
1116
let fixtureUrls = [

0 commit comments

Comments
 (0)