microsoft / microsoft/apm

[perf-scan] 2026-09-18 -- no issues found

Open
#3,018 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type/automation type/performance
Dominant language
Python
Stars
3.8k
Forks
362
Avg merge
1d 17h
Merged PRs (30d)
132

Description

Performance Scan - 2026-09-18

Automated scan of src/apm_cli/ for algorithmic performance anti-patterns.
No confirmed findings.

Scan coverage
  • src/apm_cli/ (484 files scanned)
  • Patterns checked: A (quadratic loops), B (linear scan in loop),
    C (unconditional expensive ops), D (redundant config parsing),
    E (heavy top-level imports), F (sequential independent I/O)
Notes

Candidate matches were reviewed across all six patterns and discarded as
false positives:

  • Pattern A: high for-loop-count files (uninstall/engine.py,
    hook_integrator.py, context_optimizer.py, plugin_parser.py) contain
    nested loops, but each operates on small, bounded, per-package or
    per-directory collections (candidate placements, hook events, plugin
    skill dirs) with pre-built dict/set indexes (_build_children_index,
    exact_index/plugin_index in _resolve_marketplace_packages, pool dict
    in hook_ownership.reinject_apm_source_from_sidecar) already used to
    avoid O(n^2) scans.
  • Pattern B: if x in dict/set membership checks found throughout
    install/, deps/, and commands/ are already against pre-built
    sets/dicts (seen_keys, locked_keys, allowed_hosts, exact_index), not
    raw lists.
  • Pattern C: os.walk/glob calls (deployable_source_plan.py,
    plugin_parser.py, policy/discovery.py) run once per package/scan
    invocation, not in a per-item hot loop.
  • Pattern D: script_runner.py's _load_config() and registry/
    operations.py's repeated os.getenv() calls are called at most a
    handful of times per command invocation, not in a per-dependency loop.
  • Pattern E: CLI command modules (install.py, audit.py, etc.) already
    defer heavy subsystem imports to function scope; only lightweight
    stdlib/click imports remain at module level.
  • Pattern F: subprocess.run calls inside loops (bare_cache.py,
    github_downloader.py) are sequential git config/fetch/checkout steps
    with a data dependency (fetch must precede checkout), not
    independent per-package I/O; parallel download phases already use
    ThreadPoolExecutor (install/phases/download.py, deps/apm_resolver.py,
    deps/revision_pins.py, registry/operations.py).

All hot-path code reviewed uses appropriate data structures and caching.

Generated by Daily Performance Scanner · copilot · auto · 103.2 AIC · ⌖ 4.67 AIC · ⊞ 9.7K ·

  • expires on Sep 25, 2026, 1:36 AM UTC

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

This issue records an automated scan of src/apm_cli/ and reports no confirmed findings. The listed files and patterns were reviewed and dismissed, so there is no entry point or concrete change to start from. A maintainer would need to identify an actionable performance problem before work can be considered done.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
performance
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
10/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.