Skip to content

[perf-improver] Monthly Activity 2026-06 #9258

Description

@Evangelink

Activity for June 2026

Suggested Actions for Maintainer

Performance Opportunities Backlog

  1. [Done ✅ PR [perf-improver] perf: single-pass PropertyBag walk in TerminalOutputDevice and SimplifiedConsoleOutputDeviceBase #9159 merged] Single-pass PropertyBag walk in TerminalOutputDevice / SimplifiedConsoleOutputDeviceBase
  2. [Done ✅ PR [perf-improver] perf: replace per-test Queue/Stack copies with List-based index iteration in TestMethodInfo lifecycle #9257 merged] Eliminate per-test Queue / Stack allocation in MSTest adapter lifecycle
  3. [Done ✅ PR [perf-improver] Replace Array.IndexOf(GetType()) with 'is' pattern matching in hot paths #9299 merged] Replace Array.IndexOf(GetType()) with is pattern matching in TestApplicationResult, AbortForMaxFailedTestsExtension, RetryDataConsumer
  4. [Done ✅ PR [perf-improver] Extend performance runner timing scenarios to Linux/macOS and add ClassLevel variant #9311 merged] Extend performance runner timing scenarios to Linux/macOS; add ClassLevel variant
  5. [Done ✅ PR [perf-improver] perf: avoid redundant TestNodeUid allocation in PopulateTestNodeStatistics #9348 merged] Avoid redundant TestNodeUid allocation in PerRequestServerDataConsumer.PopulateTestNodeStatistics (server mode, 2×N per test run)
  6. [Done ✅ PR [perf-improver] perf: skip unused TestContextImplementation allocations for repeat assembly/class init #9433 merged] Skip unused TestContextImplementation allocations in UnitTestRunner.RunSingleTestAsync: for tests 2+ in an assembly/class, ~2 dictionary copies + 2 CancellationTokenRegistration allocs skipped per test
  7. [Done ✅ PR [perf-improver] perf: add Linux job to nightly perf-timing workflow #9450 merged] Add Linux job to nightly perf-timing workflow
  8. [PR submitted this run] Defer class-cleanup TestContextImplementation allocation to last test only in RunSingleTestAsync — same pattern as [perf-improver] perf: skip unused TestContextImplementation allocations for repeat assembly/class init #9433, saves C×(K−1) allocations for C classes averaging K tests each (branch perf-assist/defer-class-cleanup-context-alloc)
  9. AntiTerminal.StopUpdate()_stringBuilder.ToString() allocates on every terminal-output flush; blocked on IConsole interface limitation (netstandard2.0 target). Low priority.
  10. SilenceDrivenHeartbeatRenderer — allocations only on rare heartbeat/slow-test paths; not a hot path. Low priority.
  11. ClassifyOutcome in TestResultCaptureHelper.cs — add explicit CancelledTestNodeStateProperty arm to avoid Array.IndexOf fallback for obsolete type. Very low priority.

Discovered Commands

# Build all projects (Debug)
./build.sh

# Build + run unit tests
./build.sh -test

# Pack NuGet packages (required before acceptance tests and performance runner)
./build.sh -pack

# Run acceptance integration tests (requires -pack first)
./build.sh -pack -test -integrationTest

# Run performance timing scenarios (requires -pack first)
.dotnet/dotnet run --project test/Performance/MSTest.Performance.Runner \
  -- execute --pipelineNameFilter "*PlainProcess*"

# Run a single test project (using installed SDK in .dotnet/)
.dotnet/dotnet run --project <project-path> -f net9.0 --no-build -- --treenode-filter "*/*/MyTestClass/*"

Run History

2026-06-26 15:00 UTC - Run

2026-06-25 14:30 UTC - Run

  • 🔧 Task 3: Submitted draft PR on branch perf-assist/skip-unused-init-contexts — skip unused TestContextImplementation allocations in RunSingleTestAsync: for tests 2+ in an assembly/class, avoids ~2 dictionary copies + 2 CancellationTokenRegistration register/dispose pairs per test — MERGED as PR [perf-improver] perf: skip unused TestContextImplementation allocations for repeat assembly/class init #9433 on 2026-06-26
  • 🔍 Task 2: Confirmed no new high-value targets beyond the submitted PR
  • 🧹 Task 7: Cleaned up broken #aw_linux_perf placeholder (Linux perf-timing PR was never created in run 28105007003)

2026-06-24 14:17 UTC - Run

2026-06-23 UTC - Run

2026-06-19 UTC - Run

2026-06-21 14:14 UTC - Run

2026-06-20 14:30 UTC - Run

2026-06-17 - Run

2026-06-15 - Run

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Perf Improver workflow. · 2.3K AIC · ⌖ 40 AIC · ⊞ 57.7K · [◷]( · )

Add this agentic workflows to your repo

To install this agentic workflow, run

gh aw add githubnext/agentics/workflows/perf-improver.md@main

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/performanceRuntime / build performance / efficiency.performancetype/automationCreated or maintained by an agentic workflow.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions