Repository navigation
Description
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22631 |
| Queue | ViperWindows |
| Baseline | 72dac24a0e6fa1047002858a762f36c88e53850b |
| Compare | 640b326fc81d94d410753b67c0f89b166d6666df |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<MyEventsListerViewModel>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 502.21 μs | 722.46 μs | 1.44 | 0.00 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'MicroBenchmarks.Serializers.Xml_FromStream<MyEventsListerViewModel>*'Details
MicroBenchmarks.Serializers.Xml_FromStream<MyEventsListerViewModel>.XmlSerializer_
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22631 |
| Queue | ViperWindows |
| Baseline | 72dac24a0e6fa1047002858a762f36c88e53850b |
| Compare | 640b326fc81d94d410753b67c0f89b166d6666df |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<SimpleStructWithProperties>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 2.88 μs | 3.26 μs | 1.13 | 0.00 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'MicroBenchmarks.Serializers.Xml_FromStream<SimpleStructWithProperties>*'Details
MicroBenchmarks.Serializers.Xml_FromStream<SimpleStructWithProperties>.XmlSerializer_
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22631 |
| Queue | ViperWindows |
| Baseline | 72dac24a0e6fa1047002858a762f36c88e53850b |
| Compare | 640b326fc81d94d410753b67c0f89b166d6666df |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<IndexViewModel>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 45.81 μs | 70.63 μs | 1.54 | 0.00 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'MicroBenchmarks.Serializers.Xml_FromStream<IndexViewModel>*'Details
MicroBenchmarks.Serializers.Xml_FromStream<IndexViewModel>.XmlSerializer_
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22631 |
| Queue | ViperWindows |
| Baseline | 72dac24a0e6fa1047002858a762f36c88e53850b |
| Compare | 640b326fc81d94d410753b67c0f89b166d6666df |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<CollectionsOfPrimitives>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 324.35 μs | 623.69 μs | 1.92 | 0.02 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'MicroBenchmarks.Serializers.Xml_FromStream<CollectionsOfPrimitives>*'Details
MicroBenchmarks.Serializers.Xml_FromStream<CollectionsOfPrimitives>.XmlSerializer_
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22631 |
| Queue | ViperWindows |
| Baseline | 72dac24a0e6fa1047002858a762f36c88e53850b |
| Compare | 640b326fc81d94d410753b67c0f89b166d6666df |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<Location>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 4.12 μs | 5.36 μs | 1.30 | 0.01 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'MicroBenchmarks.Serializers.Xml_FromStream<Location>*'Details
MicroBenchmarks.Serializers.Xml_FromStream<Location>.XmlSerializer_
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository





Activity
LoopedBard3 commentedon Aug 4, 2026
🔍 Automated Triage Analysis
Summary: Verified regression in XmlSerializer_ — caused by commit efe647b ("XmlSerializer - Fire UnknownAttribute for stray attributes on built-in typed ele"). 3 tests bisected to related culprit commits. 2 other test(s) found unrelated commits (possible alignment artifacts).
Finding Confidence: 5/5 (analysis accuracy)
Regression Confidence: 5/5 (likelihood of true regression)
Likely Cause: efe647b7aa3928130fa2a24069a397d3b8c9cbe4
🤖 Proposed Next Actions: Known-cause regression — transfer & notify — 0 done, 3 dry-run (rule⚠️ disputes (overconfident, alignment-warning, partial-bisection-divergence)
R4_known_regression_new— see Full Analysis for the table). · 🦆 Re-analysis:📊 Full Analysis (click to expand)
Summary: All 5 reported
MicroBenchmarks.Serializers.Xml_FromStream<T>.XmlSerializer_deserialization benchmarks are confirmed regressions (+13% to +92%), each a clean non-overlapping step change over 296–300 stable prior runs (z = 9.0–71.6). The shared deserialization slowdown is attributed to commit efe647b (PR #131302, "XmlSerializer - Fire UnknownAttribute for stray attributes on built-in typed elements"), which adds per-attribute checking to theXmlSerializationReaderread paths exercised by every affected test. Finding confidence 4/5 (300 runs, very low variance, not yet rerun-verified); regression confidence 5/5 (surgical direct code hit on the tested path, extreme z-scores, clean step change).Issue Overview
System.Private.Xml), which is directly the code under test.Test Analysis
Legend: μ=mean, σ=stddev, n=runs, z=z-score, Thresh%=adaptive threshold
Finding Confidence: 4/5 - Exceptionally strong historical baseline (296–300 runs), very low variance (CV 0.75–1.49%), fully non-overlapping before/after distributions, no pre-existing drift. Not upgraded to 5 because no
RunWithBuildAtHashrerun or bisection has been performed yet.Candidate Stack Relevance
src/libraries/System.Private.Xml/src/System/Xml/Serialization/{XmlSerializationReader,ReflectionXmlSerializationReader,XmlSerializationReaderILGen}.csXml_FromStream<T>.XmlSerializer_benchmark.src/libraries/System.Text.Json/...(ReflectionMemberAccessor)src/libraries/System.Text.Json/...(new converters)src/libraries/Common/src/System/Number.Parsing.Common.csConfirmed Regressions
All five regressions share the same code path and the same likely cause. Details are grouped; per-test deltas are in the Test Analysis table above.
Xml_FromStream<CollectionsOfPrimitives>.XmlSerializer_ (+92.3%) — highest severity
XmlSerializationReader.cs(+28),ReflectionXmlSerializationReader.cs(+25), andXmlSerializationReaderILGen.cs(+98) — the exact deserialization read paths driven byXml_FromStream<T>.XmlSerializer_. FiringUnknownAttributefor stray attributes on built-in typed elements introduces additional attribute enumeration/checking per element during read, which explains a uniform slowdown across all payload shapes (struct, view models, collections). It is the only commit in the 29-commit range that touches XmlSerializer deserialization.Xml_FromStream<IndexViewModel>.XmlSerializer_ (+54.2%)
Xml_FromStream<MyEventsListerViewModel>.XmlSerializer_ (+43.9%)
Xml_FromStream<Location>.XmlSerializer_ (+30.2%)
Xml_FromStream<SimpleStructWithProperties>.XmlSerializer_ (+13.1%)
Open Questions
RunWithBuildAtHashcomparing the parent of efe647b against efe647b on one high-severity test (e.g., CollectionsOfPrimitives). Bisection is optional given the single obvious candidate.Recommended Actions
RunWithBuildAtHashonMicroBenchmarks.Serializers.Xml_FromStream<CollectionsOfPrimitives>.XmlSerializer_at efe647b vs its parent to confirm the ~2× jump.XmlSerializationReader.cs/ReflectionXmlSerializationReader.cs/XmlSerializationReaderILGen.cs; assess whether theUnknownAttributecheck can be short-circuited when no stray attributes are present (fast path) to eliminate the per-element overhead.Xml_FromStream<T>payload shapes.Bisection Results
Total bisection time: 2108s
Tests measured: 5/5
Culprit found: 5/5
Bisection found commits that are unrelated to the regressed tests. This strongly suggests the performance changes are caused by code alignment, binary layout, or other non-functional factors rather than actual regressions. Consider marking as noise.
MicroBenchmarks.Serializers.Xml_FromStream.XmlSerializer_
Helix jobs
f4d4659c-d949-44b8-878a-f1753ea66e3bed1dadc4-582e-4679-88e2-e4e4b52a988b69dd242b-b6bf-492e-92fd-4c92ec71292bPer-commit measurements
72dac24a0e6fac605351eff9974b4b56b05f4a38c7bd33cd1e48ed63cfe6bdfac9aa0da83965f5ce78a5640b326fc81defe647b7aa39Bisection details
…[earlier output omitted]
Bisection complete. The culprit is a genuine, functionally-related XmlSerializer change — no alignment warning needed.
MicroBenchmarks.Serializers.Xml_FromStream.XmlSerializer_
Helix jobs
de6f674d-77d2-44ad-af50-c49ad4c01b8462ec83ff-815b-4c8c-91cd-5873a35aed8bPer-commit measurements
72dac24a0e6f490a2b069df759c7521855c2fdccdc6954790b4b5f2a1f7d3965f5ce78a5640b326fc81dBisection details
…[earlier output omitted]
ALIGNMENT WARNING:
This bisection found a commit that does not appear related to the regression test.
This suggests the performance change may be due to code alignment, binary layout,
or other non-functional factors rather than a regression in the tested code path.
MicroBenchmarks.Serializers.Xml_FromStream.XmlSerializer_
Helix jobs
de6bb88b-7aaf-4d5b-bc85-569e33ab2e6d9bcca097-fcde-416e-8fce-c57fac1721cb6b447610-cce2-4933-892d-77fbc59d7700Per-commit measurements
72dac24a0e6fac605351eff93965f5ce78a5974b4b56b05f4a38c7bd33cd1e48ed63cfe6bdfac9aa0da8640b326fc81defe647b7aa39Bisection details
…[earlier output omitted]
MicroBenchmarks.Serializers.Xml_FromStream.XmlSerializer_
Helix jobs
18ed372f-97a6-48d6-9417-0184f28654c42925627b-6d89-43c6-b30f-48683e7cff9aPer-commit measurements
72dac24a0e6fac605351eff93965f5ce78a5974b4b56b05f719a5c7e1c7c4a38c7bd33cd5b3683bc150d1e48ed63cfe6bdfac9aa0da8640b326fc81defe647b7aa39Bisection details
…[earlier output omitted]
MicroBenchmarks.Serializers.Xml_FromStream.XmlSerializer_
Helix jobs
c27cdbd3-87df-481e-9dc4-4225a2c5bf0618317734-42dd-455d-a7c5-8ee53801e0f9dc348fed-3d3c-43ae-9422-75fe39321fbaPer-commit measurements
72dac24a0e6f490a2b069df71e48ed63cfe64a38c7bd33cd974b4b56b05f3965f5ce78a5640b326fc81dbdfac9aa0da8efe647b7aa39Bisection details
…[earlier output omitted]
The regression step (~1225 ns) is roughly 14× the 2σ noise floor (≈86.7 ns), so the single-sample measurements are statistically decisive here — confidence is not tempered by variance. Cleaning up temp files.
● Remove temp output files (shell)
│ rm -f /tmp/1785857537584-copilot-tool-output-677631.txt
│ /tmp/1785858180079-copilot-tool-output-7143ed.txt
└ 1 line…
Bisection complete. The culprit is efe647b (PR #131302, "XmlSerializer - Fire UnknownAttribute for stray attributes on built-in typed elements"), which adds per-element attribute-walking directly to the XmlSerializer deserialization read path exercised by this benchmark — a clear mechanism for the +30% regression. Confidence 5/5; the step change is ~14× the noise floor.
🤖 Proposed Next Actions
Rule:
R4_known_regression_new— Known-cause regression — transfer & notify.Verified regression attributed to commit efe647b (finding 5/5, regression 5/5, bisection RELATED). No prior linked autofile issue found.
efe647b7aa39🦆 Pre-bisection Re-analysis (advisory)
✅ Agrees with the pre-bisection plan — advisory only, not applied
Rationale: All five findings are non-noise with high change confidence (5/5), relevant stacks, and a consistent likely culprit (efe647b), so the actionable classification is sound and every queued test matches a strongly-regressed finding. The candidate set exactly mirrors the actionable signal with no noisy tests to drop or regressed tests missing.
This critique is advisory in the current configuration and did not change which tests were bisected.
🦆 Re-analysis (advisory)
Flags:
overconfident,alignment-warning,partial-bisection-divergenceRationale: Bisection strongly supports efe647b (4 of 5 benchmarks converged successfully, RELATED), so the culprit stands, but two findings carry alignmentWarning=True and one benchmark bisected to an unrelated commit, and no z-score/variance evidence is provided, so a maxed 5/5 change and 5/5 finding confidence are slightly overstated and should be 4/5.
Suggested confidence: Finding Confidence → 4/5; Change Confidence → 4/5 (advisory — not applied)
This critique is advisory in the current configuration and did not change the confidences, culprit, or proposed actions above.
Generated by PerfTriageAgent on 2026-08-04 15:51 UTC
DrewScoggins commentedon Aug 4, 2026
Related to #131302.
Related regressions:
LoopedBard3 commentedon Aug 4, 2026
Related Regressions — issues attributed to the same commit:
Augmented by PerfTriageAgent.
Fix XmlSerializer UnknownAttribute perf regression (#131908)