Repository navigation
Description
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22631 |
| Queue | ViperWindows |
| Baseline | ffc818ff8b4c7cca64d3c148831501ad42e23acf |
| Compare | b60e14acce3bf6e079f7cacfc541318b3217ff73 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 15.78 ns | 27.09 ns | 1.72 | 0.41 | False | ||||
| 9.98 ns | 15.45 ns | 1.55 | 0.59 | False | ||||
| 16.22 ns | 19.00 ns | 1.17 | 0.51 | False | ||||
| 14.25 ns | 15.75 ns | 1.10 | 0.51 | False | ||||
| 15.72 ns | 17.23 ns | 1.10 | 0.45 | 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 'System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>*'Details
System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>.Max_Vector(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>.BitwiseAnd_Scalar(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>.AddMultiply_ScalarMultiplier(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>.Add_Vector(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>.BitwiseAnd_Vector(BufferLength: 128)
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 | ffc818ff8b4c7cca64d3c148831501ad42e23acf |
| Compare | b60e14acce3bf6e079f7cacfc541318b3217ff73 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 7.55 ns | 16.28 ns | 2.16 | 0.62 | False | ||||
| 15.47 ns | 26.97 ns | 1.74 | 0.47 | False | ||||
| 263.93 ns | 422.61 ns | 1.60 | 0.48 | False | ||||
| 11.25 ns | 15.72 ns | 1.40 | 0.51 | False | ||||
| 111.78 ns | 138.13 ns | 1.24 | 0.23 | 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 'System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>*'Details
System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.Round(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarAddend(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarAddend(BufferLength: 3079)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.Truncate(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.Round(BufferLength: 3079)
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 | ffc818ff8b4c7cca64d3c148831501ad42e23acf |
| Compare | b60e14acce3bf6e079f7cacfc541318b3217ff73 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 6.23 ns | 22.45 ns | 3.60 | 0.04 | False | ||||
| 7.57 ns | 22.49 ns | 2.97 | 0.03 | 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 'System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>*'Details
System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.OnesComplement(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.PopCount(BufferLength: 128)
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 | ffc818ff8b4c7cca64d3c148831501ad42e23acf |
| Compare | b60e14acce3bf6e079f7cacfc541318b3217ff73 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 14.26 ns | 27.11 ns | 1.90 | 0.48 | False | ||||
| 9.90 ns | 15.99 ns | 1.62 | 0.60 | 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 'System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>*'Details
System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.Max_Vector(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.BitwiseAnd_Scalar(BufferLength: 128)
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 | ffc818ff8b4c7cca64d3c148831501ad42e23acf |
| Compare | b60e14acce3bf6e079f7cacfc541318b3217ff73 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Collections.Tests.Perf_BitArray
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 11.07 ns | 20.92 ns | 1.89 | 0.52 | False | ||||
| 11.02 ns | 14.98 ns | 1.36 | 0.40 | 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 'System.Collections.Tests.Perf_BitArray*'Details
System.Collections.Tests.Perf_BitArray.BitArrayXor(Size: 512)
ETL Files
Histogram
JIT Disasms
System.Collections.Tests.Perf_BitArray.BitArrayAnd(Size: 512)
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 | ffc818ff8b4c7cca64d3c148831501ad42e23acf |
| Compare | b60e14acce3bf6e079f7cacfc541318b3217ff73 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Text.Perf_Ascii
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 18.39 ns | 23.49 ns | 1.28 | 0.21 | False | ||||
| 18.35 ns | 23.02 ns | 1.25 | 0.17 | 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 'System.Text.Perf_Ascii*'Details
System.Text.Perf_Ascii.ToUpperInPlace_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.ToLowerInPlace_Chars(Size: 128)
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 | ffc818ff8b4c7cca64d3c148831501ad42e23acf |
| Compare | b60e14acce3bf6e079f7cacfc541318b3217ff73 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Memory.Span<Int32>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 102.14 ns | 129.82 ns | 1.27 | 0.33 | 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 'System.Memory.Span<Int32>*'Details
System.Memory.Span<Int32>.Fill(Size: 3000)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository



















Activity
LoopedBard3 commentedon Oct 6, 2026
🔍 Automated Triage Analysis
Summary: Measured regression in 2 test(s). Bisection localized commit boundaries, but a related functional cause has not been established. Uncertain or unrelated code-path relevance does not establish that the measured change is noise. Bisection found no change for 2 test(s) — it ran but the change didn't reproduce (noisy or bimodal pattern).
Finding Confidence: 4/5 (analysis accuracy)
Regression Confidence: 4/5 (likelihood of true regression)
🤖 Proposed Next Actions: Uncertain — flag for re-triage — 1 done, 1 dry-run (rule
R5_look_again— see Full Analysis for the table).📊 Full Analysis (click to expand)
Summary: Historical analysis confirms 13 regressions (+25.49% to +260.14%), with four additional borderline slowdowns and two noise-level changes. The leading shared cause is 7693364, a CoreCLR JIT loop-unrolling change; finding confidence is 4/5 and regression confidence is 4/5 for the strongest signals, but attribution remains unverified because a targeted Helix run completed without a report.
Issue Overview
Test Analysis
NumberTensorPrimitives<Int32>.Max_Vector(128)NumberTensorPrimitives<Int32>.BitwiseAnd_Scalar(128)NumberTensorPrimitives<Int32>.AddMultiply_ScalarMultiplier(128)NumberTensorPrimitives<Int32>.Add_Vector(128)NumberTensorPrimitives<Int32>.BitwiseAnd_Vector(128)FloatingPointTensorPrimitives<Single>.Round(128)FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarAddend(128)FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarAddend(3079)FloatingPointTensorPrimitives<Single>.Truncate(128)FloatingPointTensorPrimitives<Single>.Round(3079)BinaryIntegerTensorPrimitives<Byte>.OnesComplement(128)BinaryIntegerTensorPrimitives<Byte>.PopCount(128)NumberTensorPrimitives<Single>.Max_Vector(128)NumberTensorPrimitives<Single>.BitwiseAnd_Scalar(128)BitArray.BitArrayXor(512)BitArray.BitArrayAnd(512)Ascii.ToUpperInPlace_Chars(128)Ascii.ToLowerInPlace_Chars(128)Span<Int32>.Fill(3000)Legend: μ=mean, σ=stddev, n=historical measurements, z=z-score, Thresh%=adaptive threshold
Finding Confidence: 4/5 - Every test has 296-300 historical measurements and the strongest regressions are sustained across 13 post-change measurements. Confidence is not 5/5 because the targeted verification job returned no benchmark report.
Candidate Stack Relevance
src/coreclr/jit/flowgraph.cpp,optimizer.cppsrc/coreclr/jit/assertionprop.cppsrc/coreclr/jit/src/libraries/System.Numerics.Tensors/eng/pipelines/Confirmed Regressions
BinaryIntegerTensorPrimitives<Byte>.OnesComplement(BufferLength: 128)(+260.14%)BinaryIntegerTensorPrimitives<Byte>.PopCount(BufferLength: 128)(+196.95%)FloatingPointTensorPrimitives<Single>.Round(BufferLength: 128)(+115.71%)NumberTensorPrimitives<Single>.Max_Vector(BufferLength: 128)(+90.13%)BitArray.BitArrayXor(Size: 512)(+89.04%)FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarAddend(BufferLength: 128)(+74.36%)NumberTensorPrimitives<Int32>.Max_Vector(BufferLength: 128)(+71.73%)NumberTensorPrimitives<Single>.BitwiseAnd_Scalar(BufferLength: 128)(+61.55%)FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarAddend(BufferLength: 3079)(+60.12%)NumberTensorPrimitives<Int32>.BitwiseAnd_Scalar(BufferLength: 128)(+54.92%)FloatingPointTensorPrimitives<Single>.Truncate(BufferLength: 128)(+39.70%)Ascii.ToUpperInPlace_Chars(Size: 128)(+27.71%)Ascii.ToLowerInPlace_Chars(Size: 128)(+25.49%)NumberTensorPrimitives<Int32>.AddMultiply_ScalarMultiplier(BufferLength: 128)(+17.18%, borderline)FloatingPointTensorPrimitives<Single>.Round(BufferLength: 3079)(+23.57%, borderline)BitArray.BitArrayAnd(Size: 512)(+35.88%, borderline)Span<Int32>.Fill(Size: 3000)(+27.10%, borderline)Open Questions
Span<Int32>.Fillis strongly multimodal, and the ASCII tests show drift rather than a clean step.Recommended Actions
OnesComplement(128),BitArrayXor(512), andSpan<Int32>.Fill(3000)at ffc818f, 779bd79, and 7693364.Bisection Results
Total bisection time: 52m 4s
Tests measured: 4/4
Culprit found: 2/4
Commit Relevance
Bisection localized commits whose functional connection to the tests is not established. This does not negate any measured reproduction.
System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>.Max_Vector(BufferLength: 128)
Bisection details
Per-commit measurements (oldest → newest) (ns)
ffc818ff8b4cf98a059f8d6bd6299e4d0a5eb60e14acce3bHelix jobs
4bd31da9-bb23-4f0a-bf6a-d51ac9e179fdSystem.Collections.Tests.Perf_BitArray.BitArrayXor(Size: 512)
Bisection details
8b056052d60bPer-commit measurements (oldest → newest) (ns)
ffc818ff8b4cf98a059f8d6b48da5e60f085eb80f4f44af28b056052d60bf17469bf36c5d6299e4d0a5eb60e14acce3bHelix jobs
f3a5e1f2-0736-424b-a7b5-8ad39fc3a1cd89d238c4-afbb-4558-8c47-49d5a92477c1a28061c6-af46-4233-aa45-2da1bd8cae93f6a1a767-7fde-4a9a-ad32-fd8f40488949System.Text.Perf_Ascii.ToUpperInPlace_Chars(Size: 128)
Bisection details
Per-commit measurements (oldest → newest) (ns)
ffc818ff8b4cf98a059f8d6bd6299e4d0a5eb60e14acce3bHelix jobs
ffe42442-0bc9-4d18-ac38-869d0bb6fbb1System.Memory.Span<Int32>.Fill(Size: 3000)
Bisection details
be7b579e4230Per-commit measurements (oldest → newest) (ns)
ffc818ff8b4cf98a059f8d6bbe7b579e4230516229e4269748da5e60f0858b056052d60bd6299e4d0a5eb60e14acce3bHelix jobs
4fb0c99c-40a7-4399-a1e7-282e39c48b37a06f7566-9e17-4920-ac11-5f760602c05037616119-6b9a-4a3a-855f-d1abd36a41dd🤖 Proposed Next Actions
Rule:
R5_look_again— Uncertain — flag for re-triage.Confidence is sufficient (finding 4/5, regression 4/5), but no bisection result had
commit_relevance = RELATEDwithout an alignment warning.Look Againuntriaged🦆 Pre-bisection Re-analysis (advisory)
Flags:
unsupported-candidate,wasted-bisection-slotRationale: Two queued tests have no corresponding per-finding signal, so their inclusion is unsupported and risks wasting expensive bisection slots. Replace them with high-confidence actionable findings covering distinct tensor operation families.
Suggested drop from bisection:
System.Text.Perf_Ascii.ToUpperInPlace_Chars(Size: 128),System.Memory.Span<Int32>.Fill(Size: 3000)(advisory — not applied)Suggested add to bisection:
System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.Round(BufferLength: 128),System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.OnesComplement(BufferLength: 128)(advisory — not applied)This critique is advisory in the current configuration and did not change which tests were bisected.
🦆 Re-analysis (advisory)
Flags:
overconfident,weak-bisection-evidence,unsupported-culprit,possible-noiseRationale: The relevant bisection was inconclusive, while the successful bisections identified unrelated commits, and no quantitative history evidence is provided to justify 4/5 regression confidence. The per-finding culprit was not surfaced by the reported bisection and should be treated as unsupported.
Disputed culprit:
7693364c5fef379683b324b82a0b511895e4c37c(advisory — not applied)Suggested confidence: Finding Confidence → 3/5; Change Confidence → 2/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-10-06 10:52 UTC
LoopedBard3 commentedon Oct 6, 2026
Tensor related tests are likely impacted by #135060, others are not as clearly impacted. FYI @tannergooding
dotnet-policy-service commentedon Oct 6, 2026
Tagging subscribers to this area: @dotnet/area-system-numerics-tensors
See info in area-owners.md if you want to be subscribed.