Skip to content

Conversation

@anonrig
Copy link
Member

@anonrig anonrig commented Jan 20, 2026

This is a small experiment I'm doing with github.com/anonrig/commonjs-lexer, to see the performance impact. there are failing tests and the goal of this pull-request is not to land it, but to see the performance impact.

Benchmark CI: https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1783/console

                                                                                                                                                                confidence improvement accuracy (*)
esm/detect-esm-syntax.js n=10000 type='with-package-json'                                                                                                              ***      0.88 %       ±0.45%
esm/detect-esm-syntax.js n=10000 type='without-package-json'                                                                                                            **      0.77 %       ±0.55%
esm/esm-legacyMainResolve.js resolvedFile='node_modules/non-exist' packageConfigMain='./index.js' packageJsonUrl='node_modules/test/package.json' n=10000                      -0.58 %       ±0.85%
esm/esm-legacyMainResolve.js resolvedFile='node_modules/non-exist' packageConfigMain='' packageJsonUrl='node_modules/test/package.json' n=10000                        ***     -1.60 %       ±0.91%
esm/esm-legacyMainResolve.js resolvedFile='node_modules/test/index.js' packageConfigMain='./index.js' packageJsonUrl='node_modules/test/package.json' n=10000           **     -1.33 %       ±1.00%
esm/esm-legacyMainResolve.js resolvedFile='node_modules/test/index.js' packageConfigMain='' packageJsonUrl='node_modules/test/package.json' n=10000                    ***     -1.46 %       ±0.73%
esm/esm-legacyMainResolve.js resolvedFile='node_modules/test/index.json' packageConfigMain='./index.js' packageJsonUrl='node_modules/test/package.json' n=10000         **     -1.56 %       ±0.96%
esm/esm-legacyMainResolve.js resolvedFile='node_modules/test/index.json' packageConfigMain='' packageJsonUrl='node_modules/test/package.json' n=10000                  ***     -1.54 %       ±0.60%
esm/esm-legacyMainResolve.js resolvedFile='node_modules/test/index.node' packageConfigMain='./index.js' packageJsonUrl='node_modules/test/package.json' n=10000                -0.78 %       ±1.07%
esm/esm-legacyMainResolve.js resolvedFile='node_modules/test/index.node' packageConfigMain='' packageJsonUrl='node_modules/test/package.json' n=10000                   **     -1.14 %       ±0.74%
esm/esm-loader-defaultResolve.js specifier='./relative-existing.js' n=1000                                                                                                     -2.86 %       ±4.89%
esm/esm-loader-defaultResolve.js specifier='./relative-nonexistent.js' n=1000                                                                                                  -0.81 %       ±2.17%
esm/esm-loader-defaultResolve.js specifier='node:os' n=1000                                                                                                                     5.07 %       ±9.19%
esm/esm-loader-defaultResolve.js specifier='node:prefixed-nonexistent' n=1000                                                                                                   7.08 %      ±11.08%
esm/esm-loader-defaultResolve.js specifier='unprefixed-existing' n=1000                                                                                                        -0.81 %       ±2.45%
esm/esm-loader-defaultResolve.js specifier='unprefixed-nonexistent' n=1000                                                                                                     -0.00 %       ±2.17%
esm/esm-loader-import.js specifier='./relative-existing.js' n=1000                                                                                                              2.91 %       ±4.51%
esm/esm-loader-import.js specifier='./relative-nonexistent.js' n=1000                                                                                                          -0.59 %       ±3.03%
esm/esm-loader-import.js specifier='data:text/javascript,{i}' n=1000                                                                                                           -0.15 %       ±2.54%
esm/esm-loader-import.js specifier='node:os' n=1000                                                                                                                      *     -4.87 %       ±4.63%
esm/esm-loader-import.js specifier='node:prefixed-nonexistent' n=1000                                                                                                          -4.39 %       ±4.87%
esm/import-cjs.js type='cold'                                                                                                                                          ***     25.80 %       ±0.65%
esm/import-cjs.js type='warm'                                                                                                                                          ***     11.79 %       ±0.18%
esm/import-esm-reload.js n=1000 count=1                                                                                                                                 **     -1.91 %       ±1.15%
esm/import-esm-reload.js n=1000 count=100                                                                                                                                       0.30 %       ±0.68%
esm/import-meta.js valuesToRead='dirname-and-filename' n=1000                                                                                                          ***     -1.35 %       ±0.72%
esm/import-meta.js valuesToRead='dirname' n=1000                                                                                                                        **     -1.06 %       ±0.63%
esm/import-meta.js valuesToRead='filename' n=1000                                                                                                                       **     -1.06 %       ±0.75%
esm/import-meta.js valuesToRead='url' n=1000                                                                                                                             *      0.92 %       ±0.69%
esm/require-esm.js n=1000 exports='default' type='access'                                                                                                                      -0.01 %       ±1.17%
esm/require-esm.js n=1000 exports='default' type='all'                                                                                                                          0.11 %       ±1.70%
esm/require-esm.js n=1000 exports='default' type='load'                                                                                                                         0.69 %       ±1.89%
esm/require-esm.js n=1000 exports='named' type='access'                                                                                                                        -0.00 %       ±1.33%
esm/require-esm.js n=1000 exports='named' type='all'                                                                                                                    **      3.05 %       ±1.79%
esm/require-esm.js n=1000 exports='named' type='load'                                                                                                                           1.46 %       ±2.07%

@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/gyp
  • @nodejs/security-wg

@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. dependencies Pull requests that update a dependency file. needs-ci PRs that need a full CI run. labels Jan 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build Issues and PRs related to build files or the CI. dependencies Pull requests that update a dependency file. needs-ci PRs that need a full CI run.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants