Avatar for the oxc-project user
oxc-project
oxc-resolver
BlogDocsChangelog

Performance History

Latest Results

chore(bench): exclude non-deterministic multi-threaded benches from CodSpeed The pm/* and resolver_*[multi-thread] benchmarks fan resolution out across rayon worker threads. Rayon's thread count is the detected core count, which varies across GitHub ubuntu-latest runners, and work-stealing is non-deterministic — so under CodSpeed's single-core instrumentation the instruction count is flaky (CodSpeed flags "Different runtime environments detected"). Unrelated PRs showed +-3-12% swings on these (e.g. a tsconfig-only change "regressing" pm/npm-flat -7% while pm/yarn-isolated "improved" +12%). Gate the rayon fan-out out of the codspeed feature: drop the two resolver multi-thread variants (the single-thread variant is the deterministic signal) and resolve the pm workload sequentially. Both still run multi-threaded under local `cargo bench`. The single-thread / symlinks / tsconfig / deserialization benches are unchanged.
perf/codspeed-rm-flaky-benches
12 hours ago
chore: release v11.22.0
release-plz-2026-06-18T23-48-37Z
17 hours ago
chore: release v11.22.0
release-plz-2026-06-18T23-48-37Z
17 hours ago
perf(specifier): SIMD fast-reject of specifiers without query/fragment (#1234) ## What `cargo asm` shows `Specifier::parse_query_fragment` scanning every specifier **byte-by-byte** through a stateful loop — tracking `query_start`, `fragment_start`, and `prev` (for escaped `#`) — to locate `?`/`#`. This runs on **every resolve**, but the vast majority of specifiers (`./components/Button`, `react`, `@scope/pkg`) contain neither character. Fast-reject the common case with `memchr2`: if the specifier carries no `?`/`#`, return the borrowed specifier immediately and skip the stateful loop (and its `prev`/`escaped_indexes` bookkeeping). When a `?`/`#` *is* present, the original loop runs unchanged. ## On the `memchr` dependency `memchr` is **already linked** — pulled in by `json-strip-comments` (tsconfig comment stripping) and `serde_json` (JSON parsing), both of which actively use it — so declaring it a direct dependency adds **zero binary size**; it just references already-present code. `cargo-shear` is clean (the dep is used). ## Results | version | `resolver_memory/single-thread` | | --- | --- | | original (stateful loop) | baseline | | scalar `any` fast-reject | ~0.5% faster | | **`memchr2` fast-reject** | **~1.2% faster** (−0.68% vs scalar, p=0.01) | In an isolated microbench over the resolver's representative specifier set, `memchr2` scans ~37% faster than a scalar loop *even on short inputs* — on aarch64 NEON is baseline (no runtime dispatch) and memchr has an optimized small-input path. All 315 tests pass (`--all-features`); clippy clean. Behaviour is identical — the no-`?`/`#` case already produced `(Borrowed(specifier), None, None)`.
main
17 hours ago

Latest Branches

CodSpeed Performance Gauge
+10%
chore(bench): exclude non-deterministic multi-threaded benches from CodSpeed#1237
12 hours ago
b2d10bd
perf/codspeed-rm-flaky-benches
CodSpeed Performance Gauge
+2%
perf(cache): byte-level fast path for normalize_with#1236
15 hours ago
7a5a0a3
perf/normalize-with-bytes
CodSpeed Performance Gauge
-5%
17 hours ago
b37ce3b
release-plz-2026-06-18T23-48-37Z
© 2026 CodSpeed Technology
Home Terms Privacy Docs