# Objective
Project search sends one candidate per file to its worker pool, and each
one
carried an owned `Snapshot`. Every field of `Snapshot` is cheap to clone
except
`always_included_entries`, a `Vec<Arc<RelPath>>` holding one entry per
always-included file.
With a broad file_scan_inclusions such as **/*, that vector holds an
entry per file in the project, so cloning it once per file made search
O(files²).
Partially addresses #38799 (still needs to fix the huge memory usage and
the occasional stutters) .
## Solution
Share the snapshot behind an `Arc` instead, the consumer only reads
`id()`, `abs_path()`
and `root_name()`, so nothing needs an owned copy.
## Testing
Using the [linux kernel repo](https://github.com/torvalds/linux), i
searched for `vmx_l1d_should_flush
` and `netif_rx` and its at least 60x faster on 5950x.
with `file_scan_inclusions: ["**/*"]`
Release Notes:
- Fixed project search being very slow on projects that set a broad
`file_scan_inclusions`
1e3d8b5a66Ali committed on 8/15/2026, 2:09:29 PM· committed by GitHubparent9bde578