Perf regression: nuget/rescan wall +31% (f3c6313a..17793173; #1340/#1341)
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 45/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- rust
- Bereich
- cli, performance
Rechercherichtung
Start by reproducing the nuget/hosted and nuget/rescan regression with the provided interleaved compare command, then inspect scan::hosted::run_redirect_selected_untracked, hosted::engine::confirm, and patch::redirect::presence::groups_present. The profile points to automaton construction and repeated parsing of obj/project.assets.json; use the listed commits as candidates to investigate. Done means identifying the cause and showing the benchmark no longer has the regression.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
[agent] Bench: nuget/rescan wall time is +31% and nuget/hosted +28% on today's main (17793173), compared with f3c6313a (the previous bench run, 2026-10-09). Request counts are unchanged (53).
Culprit: not bisected. The candidates are the two commits in f3c6313a..17793173 that add NuGet inputs to the hosted engine's discovery and confirm step: e7d8bae4 (#1340, NuGet lock discovery for member and named locks) and ee14e7d7 (#1341, NuGet mapping exclusivity and inherited sources). 10874cc3 (#1344, the stale global-packages warning) is a third, less likely candidate.
Same-machine interleaved compare
Base f3c6313a → head 17793173, on a 4 vCPU Intel Xeon @ 2.10GHz cloud sandbox. An A/A run on the same machine was clean.
| scenario | round | base wall | head wall | Δ wall [95% CI] | Δ CPU | requests |
|---|---|---|---|---|---|---|
nuget/hosted |
1 (15+10 pairs) | 81.9 ms | 100.9 ms | +28.4% [+12.5, +34.0] | +20.0% | 53 |
nuget/hosted |
2 (20+10 pairs) | 77.9 ms | 95.7 ms | +28.2% [+20.6, +38.1] | +21.7% | 53 |
nuget/rescan |
1 | 65.1 ms | 88.9 ms | +34.5% [+24.6, +48.5] | +24.7% | 53 |
nuget/rescan |
2 | 61.9 ms | 80.8 ms | +30.7% [+24.2, +37.2] | +23.9% | 53 |
(These numbers use the bench fixture from #1422, which allows #1344's new redirect_nuget_stale_global_package warning. Without that change the head fails validation on main.)
Hot spot
Callgrind on the head binary, nuget/rescan (900 packages, 25 patched, restored project with obj/project.assets.json), inclusive instructions:
41.7% scan::hosted::run_redirect_selected_untracked
34.8% hosted::engine::confirm
34.6% patch::redirect::presence::groups_present
23.5% aho_corasick::AhoCorasick::new (automaton build, 1 call)
11.0% Automaton::try_find_overlapping (27 texts)
14.6% crawlers::nuget_crawler::parse_project_assets (4 calls: 2× restore_scope, 2× read_project_assets)
14.8% vex::discover::nuget::extract
About a third of the scan goes to groups_present, which builds a DFA and scans 27 texts. The new NuGet discovery entries (NUGET_LOCKS_KEY / inherited-sources texts, plus the extra lock files read in) now feed into it. obj/project.assets.json is also parsed into a serde_json::Value four times per scan.
Repro
export CARGO_PROFILE_PERF_INHERITS=release CARGO_PROFILE_PERF_LTO=thin CARGO_PROFILE_PERF_STRIP=none
git worktree add /tmp/base f3c6313a && (cd /tmp/base && CARGO_TARGET_DIR=/tmp/tb cargo build --locked --profile perf -p socket-patch-cli)
CARGO_TARGET_DIR=/tmp/th cargo build --locked --profile perf -p socket-patch-cli -p socket-patch-bench
/tmp/th/perf/socket-patch-bench compare --base /tmp/tb/perf/socket-patch --head /tmp/th/perf/socket-patch -f '^nuget/' --runs 20
Runner: nproc 4, Intel(R) Xeon(R) Processor @ 2.10GHz.
Generated by Claude Code
- Vorherrschende Sprache
- Rust
- Sterne
- 8
- Forks
- 1
- Ø Merge
- 19 Std. 1 Min.
- Gemergte PRs (30 T.)
- 473
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus SocketDev/socket-patch
-
agent:triaged bug pm:go priority:p2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
SocketDev/socket-patch#1409 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
agent:triaged bug bughunt pm:npm priority:p3 ux
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
SocketDev/socket-patch#1072 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
agent:triaged bug bughunt pm:yarn-berry priority:p1
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
SocketDev/socket-patch#783 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Vendored cargo warns cargo_multi_version_old_cargo ("declares no rust-version") when the root package inherits rust-version from [workspace.package]Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offenagent:triaged bug bughunt pm:cargo priority:p2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
SocketDev/socket-patch#651 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
agent:triaged bench perf-regression pm:go priority:p2
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
SocketDev/socket-patch#1424 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in SocketDev/socket-patch
Ähnliche Issues
-
ai_p2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
ClickHouse/ClickHouse#125522 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug]: OpenRouter streaming chunks report the requested router name instead of the model OpenRouter servedEvtl. vergeben @Mrun25 hat das heute übernommen. Offenbug llm translation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
BerriAI/litellm#46095 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug effort:low flow:bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
jaroslawherod/micold-ai-ide#788 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Docs: refresh target-app-parity and file-format-parity against mainEvtl. vergeben @vangel76 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
storytold/photocraft#4417 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
bevyengine/dlss_wgpu#37 ·