π€ *Perf Improver here - I'm an automated AI assistant focused on performance improvements for this repository.* ## Activity for June 2026 ## Suggested Actions for Maintainer * [ ] **Review PR** #8861: Fast path in `HumanReadableDurationFormatter.Render` β `string.Create`+stackalloc on .NET 8+ (3β4 allocations β 1 per call) β [Review](https://github.com/microsoft/testfx/pull/8861) * [ ] **Review PR** perf-assist/progress-frame-reuse: Eliminate per-tick `AnsiTerminalTestProgressFrame` + `RenderedLines` allocations via double-buffer swap (~1 500 + ~1 500 allocs/5-min run) β [PRs](https://github.com/microsoft/testfx/pulls) ## Performance Opportunities Backlog 1. `AnsiTerminalTestProgressFrame` double-buffering β β **DONE** (perf-assist/progress-frame-reuse, submitted 2026-06-06) 2. `GenerateLinesToRender` `List<object>` boxing β mixed `TestProgressState`/`TestDetailState` with `is` checks; consider sealed base type; higher complexity 3. `GenerateLinesToRender` per-frame array allocs β `new TestProgressState[itemCount]`, `new int[N]`, `new List<TestDetailState>[N]` β could be pooled/reused ## Discovered Commands - Build: `./build.sh -build -c Debug` (Linux) / `.\build.cmd -build -c Debug` (Windows) - Full build (all TFMs): `./build.sh` (no flags) - Run unit tests: `artifacts/bin/Microsoft.Testing.Platform.UnitTests/Debug/net8.0/Microsoft.Testing.Platform.UnitTests` - dotnet binary: system dotnet is a stub; `build.sh` installs pinned SDK into `.dotnet/` ## Run History ### 2026-06-06 14:09 UTC - [Run](https://github.com/microsoft/testfx/actions/runs/27064427688) - π§ Task 4: PR #8861 checked β all CI green, no action needed - π§ Task 3: Implemented double-buffer swap in `AnsiTerminalTestProgressFrame`/`AnsiTerminal.RenderProgress` (PR perf-assist/progress-frame-reuse) β ~3 000 fewer GC objects/5-min run - π Measured: 1086 passed, 0 failed unit tests after change ### 2026-06-05 14:22 UTC - [Run](https://github.com/microsoft/testfx/actions/runs/27020184760) - π§ Task 3: Created PR #8861 β fast path in `HumanReadableDurationFormatter.Render` (3β4 allocs β 1) - π¬ Task 5: Checked performance issues, no new actionable opportunities found - π Task 4: PR #8823 merged β ### 2026-06-04 - [Run](https://github.com/microsoft/testfx/actions/runs/26980000000) - π Task 4: Checked open PRs for CI failures - π Task 2: Identified HumanReadableDurationFormatter opportunity ### 2026-06-03 - [Older runs] - π§ PR #8799 merged: LINQ allocations in terminal progress render hot path β - π§ PR #8823 submitted: VSTestBridge single-pass message iteration ### Earlier runs - PR #8769 merged: ANSI render hot path string allocs β - PR #8739 merged: AnsiTerminal.SetColor allocs + KnownFileExtensions HashSet β - PR #8704 merged: AsynchronousMessageBus drain dict β cached arrays β - PR #8683 merged: AnsiDetector regex β direct string comparisons β > Generated by [Perf Improver](https://github.com/microsoft/testfx/actions/runs/27064427688) Β· sonnet46 5.8M Β· [β·](https://github.com/search?q=repo%3Amicrosoft%2Ftestfx+is%3Aissue+%22gh-aw-workflow-call-id%3A+microsoft%2Ftestfx%2Fperf-improver%22&type=issues) > <details> <summary>Add this agentic workflows to your repo</summary> To install this agentic workflow, run ``` gh aw add githubnext/agentics/workflows/perf-improver.md@main ``` </details> <!-- gh-aw-agentic-workflow: Perf Improver, engine: copilot, version: 1.0.52, model: claude-sonnet-4.6, id: 27064427688, workflow_id: perf-improver, run: https://github.com/microsoft/testfx/actions/runs/27064427688 -->
π€ Perf Improver here - I'm an automated AI assistant focused on performance improvements for this repository.
Activity for June 2026
Suggested Actions for Maintainer
HumanReadableDurationFormatter.Renderβstring.Create+stackalloc on .NET 8+ (3β4 allocations β 1 per call) β ReviewAnsiTerminalTestProgressFrame+RenderedLinesallocations via double-buffer swap (~1 500 + ~1 500 allocs/5-min run) β PRsPerformance Opportunities Backlog
AnsiTerminalTestProgressFramedouble-buffering β β DONE (perf-assist/progress-frame-reuse, submitted 2026-06-06)GenerateLinesToRenderList<object>boxing β mixedTestProgressState/TestDetailStatewithischecks; consider sealed base type; higher complexityGenerateLinesToRenderper-frame array allocs βnew TestProgressState[itemCount],new int[N],new List<TestDetailState>[N]β could be pooled/reusedDiscovered Commands
./build.sh -build -c Debug(Linux) /.\build.cmd -build -c Debug(Windows)./build.sh(no flags)artifacts/bin/Microsoft.Testing.Platform.UnitTests/Debug/net8.0/Microsoft.Testing.Platform.UnitTestsbuild.shinstalls pinned SDK into.dotnet/Run History
2026-06-06 14:09 UTC - Run
AnsiTerminalTestProgressFrame/AnsiTerminal.RenderProgress(PR perf-assist/progress-frame-reuse) β ~3 000 fewer GC objects/5-min run2026-06-05 14:22 UTC - Run
HumanReadableDurationFormatter.Render(3β4 allocs β 1)2026-06-04 - Run
2026-06-03 - [Older runs]
Earlier runs
Add this agentic workflows to your repo
To install this agentic workflow, run