oxc-project
oxc-resolver
BlogDocsChangelog

perf: fast path for node_modules/package

#839
Comparing
11-16-perf_fast_path_for_node_modules_package
(
59ab98c
) with
main
(
e1ef00d
)
CodSpeed Performance Gauge
+5%
Improvements
5
Untouched
6
Skipped
5

Benchmarks

Skipped (5)

Improved

resolver_memory[multi-thread]
benches/resolver.rs::resolver::bench_resolver_memory
CodSpeed Performance Gauge
+5%
502.9 µs479 µs
resolver_memory[single-thread]
benches/resolver.rs::resolver::bench_resolver_memory
CodSpeed Performance Gauge
+5%
496.7 µs474.7 µs
resolver_real[single-thread]
benches/resolver.rs::resolver::bench_resolver_real
CodSpeed Performance Gauge
+4%
493.8 µs473.5 µs
resolver_real[multi-thread]
benches/resolver.rs::resolver::bench_resolver_real
CodSpeed Performance Gauge
+4%
498.5 µs478.3 µs
small
benches/resolver.rs::resolver::bench_package_json_deserialization::package_json_deserialization
CodSpeed Performance Gauge
+4%
11.8 µs11.3 µs

Passed

large
benches/resolver.rs::resolver::bench_package_json_deserialization::package_json_deserialization
CodSpeed Performance Gauge
+1%
27 µs26.7 µs
resolver_memory[drop]
benches/resolver.rs::resolver::bench_resolver_memory
CodSpeed Performance Gauge
0%
86 ms85.9 ms
resolver_memory[resolve from symlinks]
benches/resolver.rs::resolver::bench_resolver_memory
CodSpeed Performance Gauge
0%
60.1 ms60.2 ms
resolver_real[resolve from symlinks]
benches/resolver.rs::resolver::bench_resolver_real
CodSpeed Performance Gauge
0%
60.2 ms60.4 ms
medium
benches/resolver.rs::resolver::bench_package_json_deserialization::package_json_deserialization
CodSpeed Performance Gauge
-1%
17 µs17.2 µs
complex_real
benches/resolver.rs::resolver::bench_package_json_deserialization::package_json_deserialization
CodSpeed Performance Gauge
-1%
22.4 µs22.6 µs

Commits

Click on a commit to change the comparison range
Base
main
e1ef00d
+4.99%
perf: fast path for node_modules/package In cjs, the spec states ``` LOAD_NODE_MODULES(X, START) 1. let DIRS = NODE_MODULES_PATHS(START) 2. for each DIR in DIRS: a. LOAD_PACKAGE_EXPORTS(X, DIR) b. LOAD_AS_FILE(DIR/X) c. LOAD_AS_DIRECTORY(DIR/X) ``` `2.b. LOAD_AS_FILE(DIR/X)` never occurs first in modern package managers, and I do not recall any circumstance that crates a lone `node_modules/package.js` file. This reduces a package lookup for specifier `foo` from ``` node_modules/foo.js node_modules/foo.json node_modules/foo.node node_modules/foo/index.js ``` to ``` node_modules/foo/ (if foo failed) node_modules/foo.js node_modules/foo.json node_modules/foo.node ```
59ab98c
7 hours ago
by Boshen
© 2025 CodSpeed Technology
Home Terms Privacy Docs