You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A cached vp run spends seconds compiling the same cache globs while building the task graph #886
Written by an AI agent (Claude) on behalf of @jasonkuhrt.
In a workspace of 138 packages and 1,576 tasks, vp run @libs/enum#test with both of its tasks cached spends about 2 s of CPU after the configs load and before the first task starts, building the task graph.
Cause.resolve_glob_to_workspace_relative calls wax::Glob::new for every input and output pattern of every task. In wax 0.7, Glob::new compiles a regular expression and partition compiles another, and only the partition's prefix and text are kept. The workspace has 13,708 pattern uses but only 1,011 distinct patterns: packages repeat the same src/** and the same negations.
Measured (Vite+ 1.4.0 built against vite-task a3c087a, optimized binding, macOS, 3 interleaved runs per variant, load average about 7):
before
parse each distinct pattern once
whole run, CPU
4.45 s
2.47 s
whole run, wall
3.75 s
1.79 s
after configs load, CPU
2.06 s
0.10 s
A second, separate idea. Configs load one package after another (lib.rs). A prototype that let up to 8 loads overlap, keeping results in order, returned the same 138 configs as the serial load and took the same run from 2.47 s to 2.19 s CPU (1.79 s to 1.62 s wall) on top of the glob change. A config whose result depends on load order would be the risk, so it is left out of the fix.
Activity
perf(graph): parse each cache glob pattern once (#887)
jasonkuhrt commentedon Oct 28, 2026
Fixed by #887 and #890.