Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Perf regression: nuget/rescan wall +31% (f3c6313a..17793173; #1340/#1341)

オープン
#1,425 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
rust
領域
cli, performance

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

agent:triaged bench perf-regression pm:nuget priority:p3

[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

主要言語
Rust
スター
8
フォーク
1
平均マージ
19時間 1分
マージ済み PR(30日)
473

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

SocketDev/socket-patch のほかの issue

SocketDev/socket-patch の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。