Repository navigation
Perf regressions in Perf_Matrix benchmarks #59415
Description
Run Information
| Architecture | x64 |
|---|---|
| OS | ubuntu 18.04 |
| Baseline | 10b2f7c858934c27c56aa13845cb47064bfe87e9 |
| Compare | a842e7a1dc6c241c928c6291411393cdb2516608 |
| Diff | Diff |
Regressions in System.IO.Tests.BinaryWriterTests
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| WriteAsciiChar - Duration of single invocation | 3.44 ns | 4.71 ns | 1.37 | 0.17 | True |
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.IO.Tests.BinaryWriterTests*'Details
Payloads
Histogram
System.IO.Tests.BinaryWriterTests.WriteAsciiChar
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
| Architecture | x64 |
|---|---|
| OS | ubuntu 18.04 |
| Baseline | 10b2f7c858934c27c56aa13845cb47064bfe87e9 |
| Compare | a842e7a1dc6c241c928c6291411393cdb2516608 |
| Diff | Diff |
Regressions in System.Numerics.Tests.Perf_Matrix3x2
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| InequalityOperatorBenchmark - Duration of single invocation | 6.33 ns | 12.21 ns | 1.93 | 0.07 | True | |||||
| LerpBenchmark - Duration of single invocation | 8.16 ns | 13.30 ns | 1.63 | 0.04 | True | |||||
| NegationOperatorBenchmark - Duration of single invocation | 6.35 ns | 10.87 ns | 1.71 | 0.10 | False | |||||
| AddBenchmark - Duration of single invocation | 8.96 ns | 15.89 ns | 1.77 | 0.08 | True |
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Numerics.Tests.Perf_Matrix3x2*'Details
Payloads
Histogram
System.Numerics.Tests.Perf_Matrix3x2.InequalityOperatorBenchmark
System.Numerics.Tests.Perf_Matrix3x2.LerpBenchmark
System.Numerics.Tests.Perf_Matrix3x2.NegationOperatorBenchmark
System.Numerics.Tests.Perf_Matrix3x2.AddBenchmark
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | ubuntu 18.04 |
| Baseline | 10b2f7c858934c27c56aa13845cb47064bfe87e9 |
| Compare | a842e7a1dc6c241c928c6291411393cdb2516608 |
| Diff | Diff |
Regressions in System.Text.Json.Serialization.Tests.ReadJson<Nullable<DateTimeOffset>>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| DeserializeFromUtf8Bytes - Duration of single invocation | 130.22 ns | 140.77 ns | 1.08 | 0.05 | True |
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.Json.Serialization.Tests.ReadJson<Nullable<DateTimeOffset>>*'Details
Payloads
Histogram
System.Text.Json.Serialization.Tests.ReadJson<Nullable<DateTimeOffset>>.DeserializeFromUtf8Bytes
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | ubuntu 18.04 |
| Baseline | 10b2f7c858934c27c56aa13845cb47064bfe87e9 |
| Compare | a842e7a1dc6c241c928c6291411393cdb2516608 |
| Diff | Diff |
Regressions in System.Collections.Sort<BigStruct>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| Array_ComparerStruct - Duration of single invocation | 33.94 μs | 46.92 μs | 1.38 | 0.02 | True | |||||
| Array_Comparison - Duration of single invocation | 30.67 μs | 45.16 μs | 1.47 | 0.03 | True | |||||
| Array_ComparerClass - Duration of single invocation | 31.22 μs | 44.95 μs | 1.44 | 0.07 | True |
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.Sort<BigStruct>*'Details
Payloads
Histogram
System.Collections.Sort<BigStruct>.Array_ComparerStruct(Size: 512)
System.Collections.Sort<BigStruct>.Array_Comparison(Size: 512)
System.Collections.Sort<BigStruct>.Array_ComparerClass(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | ubuntu 18.04 |
| Baseline | 10b2f7c858934c27c56aa13845cb47064bfe87e9 |
| Compare | a842e7a1dc6c241c928c6291411393cdb2516608 |
| Diff | Diff |
Regressions in System.Collections.IterateForEachNonGeneric<Int32>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| Queue - Duration of single invocation | 3.61 μs | 3.85 μs | 1.07 | 0.06 | False |
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.IterateForEachNonGeneric<Int32>*'Details
Payloads
Histogram
System.Collections.IterateForEachNonGeneric<Int32>.Queue(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | ubuntu 18.04 |
| Baseline | 10b2f7c858934c27c56aa13845cb47064bfe87e9 |
| Compare | a842e7a1dc6c241c928c6291411393cdb2516608 |
| Diff | Diff |
Regressions in System.Collections.IterateForEach<Int32>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| ConcurrentStack - Duration of single invocation | 2.49 μs | 2.69 μs | 1.08 | 0.01 | False |
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.IterateForEach<Int32>*'Details
Payloads
Histogram
System.Collections.IterateForEach<Int32>.ConcurrentStack(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | ubuntu 18.04 |
| Baseline | 10b2f7c858934c27c56aa13845cb47064bfe87e9 |
| Compare | a842e7a1dc6c241c928c6291411393cdb2516608 |
| Diff | Diff |
Regressions in System.Collections.ContainsFalse<Int32>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| ImmutableSortedSet - Duration of single invocation | 28.60 μs | 31.25 μs | 1.09 | 0.00 | True |
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.ContainsFalse<Int32>*'Details
Payloads
Histogram
System.Collections.ContainsFalse<Int32>.ImmutableSortedSet(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | ubuntu 18.04 |
| Baseline | 10b2f7c858934c27c56aa13845cb47064bfe87e9 |
| Compare | a842e7a1dc6c241c928c6291411393cdb2516608 |
| Diff | Diff |
Regressions in System.Numerics.Tests.Perf_Vector2
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| TransformNormalByMatrix3x2Benchmark - Duration of single invocation | 1.99 ns | 8.09 ns | 4.06 | 0.14 | True |
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Numerics.Tests.Perf_Vector2*'Details
Payloads
Histogram
System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix3x2Benchmark
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | ubuntu 18.04 |
| Baseline | 10b2f7c858934c27c56aa13845cb47064bfe87e9 |
| Compare | a842e7a1dc6c241c928c6291411393cdb2516608 |
| Diff | Diff |
Regressions in System.Memory.Span<Byte>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| SequenceCompareTo - Duration of single invocation | 9.92 ns | 12.15 ns | 1.23 | 0.08 | False |
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Memory.Span<Byte>*'Details
Payloads
Histogram
System.Memory.Span<Byte>.SequenceCompareTo(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | ubuntu 18.04 |
| Baseline | 10b2f7c858934c27c56aa13845cb47064bfe87e9 |
| Compare | a842e7a1dc6c241c928c6291411393cdb2516608 |
| Diff | Diff |
Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Common
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| Uri_IsMatch - Duration of single invocation | 132.85 ns | 143.51 ns | 1.08 | 0.04 | False |
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Common*'Details
Payloads
Histogram
System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsMatch(Options: IgnoreCase, Compiled)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository





)_1.png)
_1.png)
_2.png)
_3.png)
_1.png)
_1.png)
_1.png)

_1.png)

Activity
[-][Perf] Changes at 9/18/2021 1:42:06 AM[/-][+]Perf regressions in Perf_Matrix benchmarks[/+]kunalspathak commentedon Sep 21, 2021
Introduced in #55604
kunalspathak commentedon Sep 21, 2021
@alexcovington
kunalspathak commentedon Sep 21, 2021
windows/x64 regression - dotnet/perf-autofiling-issues#1487
kunalspathak commentedon Sep 21, 2021
windows/x86 regression - dotnet/perf-autofiling-issues#1492
9 remaining items
JulieLeeMSFT commentedon Sep 24, 2021
Moving this to .NET 7 since we passed .NET 6 RC2 snap.
adamsitnik commentedon Feb 11, 2022
I confirm that
System.Numerics.Tests.Perf_Matrix4x4.NegationOperatorBenchmarkregression is still a thing for 7.0:adamsitnik commentedon Feb 11, 2022
Same goes for
System.Collections.Sort<BigStruct>.Array_Comparison(Size: 512)but it's more hardware-specifickunalspathak commentedon Feb 11, 2022
@alexcovington - do you mind taking a look at fresh numbers and see it with and without #59497 ?
alexcovington commentedon Feb 14, 2022
@kunalspathak Sorry for the delay. I'm not able to reproduce the regression on either my 3600 or 5900X systems.
I pulled the latest main and built two versions, one with and without #59497.
Base commit is 77d6833.
To remove #59497 to use as a comparison, I reverted commit b82e838:
Here are my numbers on my Ryzen 5 3600 system (the results are similar on my 5900X system and don't see much change either):
System.Collections.Sort.Array_Comparison
System.Numerics.Tests.Perf_Matrix4x4.NegationOperatorBenchmark
Please let me know if I can clarify anything.
kunalspathak commentedon Jun 4, 2022
Perf_Matrix3x2 seems to have spikes historically:
jozkee commentedon Oct 14, 2022
A regression for
System.Numerics.Tests.Perf_Matrix4x4.NegateBenchmarkshowed up in the 6.0 vs 7.0-rc2 report, potentially x64 specific. The historical data only goes back until october 2021 so we are unable to determine if this is just noise nor to see what might've caused it.Details
System.Numerics.Tests.Perf_Matrix4x4.NegateBenchmark
jozkee commentedon Oct 14, 2022
Actually, this can be closed as duplicate of #65191 which is tracking System.Numerics.Tests.Perf_Matrix4x4.NegateBenchmark and other regressions in the same area.