Closed performanceautofiler[bot] closed 1 year ago
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[ToString - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Tests.Perf_Int32.ToString(value%3a%2012345).html>) | 9.97 ns | 12.19 ns | 1.22 | 0.06 | False | |||||
[ToString - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Tests.Perf_Int32.ToString(value%3a%202147483647).html>) | 12.18 ns | 15.37 ns | 1.26 | 0.07 | False |
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.Tests.Perf_Int32*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[ForEach_Array - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark.ForEach_Array.html>) | 3.55 ns | 4.85 ns | 1.36 | 0.17 | False |
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 'Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[Compare_DifferentFirstChar - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count%3a%201024%2c%20Options%3a%20(%2c%20None)).html>) | 29.84 ns | 35.78 ns | 1.20 | 0.07 | False | |||||
[Compare_DifferentFirstChar - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count%3a%201024%2c%20Options%3a%20(en-US%2c%20None)).html>) | 30.59 ns | 35.03 ns | 1.14 | 0.06 | False | |||||
[Compare_DifferentFirstChar - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count%3a%201024%2c%20Options%3a%20(%2c%20IgnoreCase)).html>) | 31.05 ns | 34.90 ns | 1.12 | 0.06 | False | |||||
[Compare_DifferentFirstChar - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count%3a%201024%2c%20Options%3a%20(en-US%2c%20IgnoreCase)).html>) | 30.57 ns | 34.85 ns | 1.14 | 0.07 | False | |||||
[Compare_DifferentFirstChar - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count%3a%201024%2c%20Options%3a%20(pl-PL%2c%20None)).html>) | 29.24 ns | 35.40 ns | 1.21 | 0.05 | False | |||||
[Compare_Same_Upper - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Globalization.Tests.StringEquality.Compare_Same_Upper(Count%3a%201024%2c%20Options%3a%20(en-US%2c%20OrdinalIgnoreCase)).html>) | 1.06 μs | 1.22 μs | 1.15 | 0.03 | False |
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.Globalization.Tests.StringEquality*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[ReadReturnBytes - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Text.Json.Tests.Perf_Reader.ReadReturnBytes(IsDataCompact%3a%20False%2c%20TestCase%3a%20DeepTree).html>) | 6.62 μs | 9.25 μs | 1.40 | 0.52 | False |
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.Json.Tests.Perf_Reader*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[ToString - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Tests.Perf_UInt32.ToString(value%3a%2012345).html>) | 11.36 ns | 13.81 ns | 1.22 | 0.07 | False | |||||
[ToString - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Tests.Perf_UInt32.ToString(value%3a%204294967295).html>) | 11.82 ns | 16.83 ns | 1.42 | 0.10 | False |
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.Tests.Perf_UInt32*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[OrderByString - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Linq.Tests.Perf_OrderBy.OrderByString(NumberOfPeople%3a%20512).html>) | 229.73 μs | 267.57 μs | 1.16 | 0.05 | False |
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.Linq.Tests.Perf_OrderBy*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[SortedList - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Collections.CtorFromCollectionNonGeneric(String).SortedList(Size%3a%20512).html>) | 239.24 μs | 261.47 μs | 1.09 | 0.08 | False |
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.CtorFromCollectionNonGeneric<String>*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[ToHexString - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Perf_Convert.ToHexString.html>) | 35.61 ns | 41.11 ns | 1.15 | 0.01 | False |
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.Perf_Convert*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[EnumerateUsingIndexer - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Text.Json.Document.Tests.Perf_EnumerateArray.EnumerateUsingIndexer(TestCase%3a%20ArrayOfNumbers).html>) | 1.35 μs | 1.43 μs | 1.06 | 0.03 | False |
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.Json.Document.Tests.Perf_EnumerateArray*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[Email_IsMatch - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Text.RegularExpressions.Tests.Perf_Regex_Common.Email_IsMatch(Options%3a%20Compiled).html>) | 104.09 ns | 120.91 ns | 1.16 | 0.12 | False |
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.RegularExpressions.Tests.Perf_Regex_Common*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[DeserializeFromUtf8Bytes - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Text.Json.Serialization.Tests.ReadJson(MyEventsListerViewModel).DeserializeFromUtf8Bytes(Mode%3a%20Reflection).html>) | 218.31 μs | 296.62 μs | 1.36 | 0.09 | False |
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.Json.Serialization.Tests.ReadJson<MyEventsListerViewModel>*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[SortedList - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Collections.ContainsKeyTrue(String%2c%20String).SortedList(Size%3a%20512).html>) | 178.83 μs | 214.91 μs | 1.20 | 0.05 | False |
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.ContainsKeyTrue<String, String>*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[SortedSet - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Collections.ContainsTrueComparer(String).SortedSet(Size%3a%20512).html>) | 217.29 μs | 258.24 μs | 1.19 | 0.08 | False | |||||
[ImmutableSortedSet - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Collections.ContainsTrueComparer(String).ImmutableSortedSet(Size%3a%20512).html>) | 218.41 μs | 258.39 μs | 1.18 | 0.09 | False |
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.ContainsTrueComparer<String>*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[SortedDictionary - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Collections.TryGetValueTrue(String%2c%20String).SortedDictionary(Size%3a%20512).html>) | 198.46 μs | 241.93 μs | 1.22 | 0.09 | False | |||||
[SortedList - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Collections.TryGetValueTrue(String%2c%20String).SortedList(Size%3a%20512).html>) | 177.71 μs | 215.00 μs | 1.21 | 0.06 | False |
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.TryGetValueTrue<String, String>*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[SortedList - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Collections.CreateAddAndRemove(String).SortedList(Size%3a%20512).html>) | 443.62 μs | 516.32 μs | 1.16 | 0.08 | False |
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.CreateAddAndRemove<String>*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[SortedList - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Collections.IndexerSet(String).SortedList(Size%3a%20512).html>) | 178.61 μs | 215.41 μs | 1.21 | 0.08 | False |
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.IndexerSet<String>*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[SortedSet - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Collections.ContainsTrue(String).SortedSet(Size%3a%20512).html>) | 175.73 μs | 216.13 μs | 1.23 | 0.07 | False |
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.ContainsTrue<String>*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[SystemTextJsonReflection - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/MicroBenchmarks.Serializers.Json_FromString(MyEventsListerViewModel).SystemTextJsonReflection.html>) | 229.98 μs | 247.97 μs | 1.08 | 0.08 | False |
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.Json_FromString<MyEventsListerViewModel>*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[ToString_Format_Flags_Large - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Tests.Perf_Enum.ToString_Format_Flags_Large(value%3a%20All%2c%20format%3a%20%22d%22).html>) | 16.11 ns | 23.19 ns | 1.44 | 0.12 | False |
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.Tests.Perf_Enum*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[GetDecimal - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Text.Json.Tests.Perf_Get.GetDecimal.html>) | 3.61 μs | 4.29 μs | 1.19 | 0.02 | False |
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.Json.Tests.Perf_Get*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[ToString_MultipleSegments - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Text.Tests.Perf_StringBuilder.ToString_MultipleSegments(length%3a%20100).html>) | 23.87 ns | 31.37 ns | 1.31 | 0.07 | False |
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.Tests.Perf_StringBuilder*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[Asinh - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.MathBenchmarks.Single.Asinh.html>) | 89.01 μs | 94.61 μs | 1.06 | 0.01 | False |
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.MathBenchmarks.Single*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[ConcurrentStack - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Collections.Tests.Add_Remove_SteadyState(String).ConcurrentStack(Count%3a%20512).html>) | 14.60 ns | 16.98 ns | 1.16 | 0.05 | False |
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.Add_Remove_SteadyState<String>*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[TryParseDecimal - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Buffers.Text.Tests.Utf8ParserTests.TryParseDecimal(value%3a%20123456.789).html>) | 34.24 ns | 39.61 ns | 1.16 | 0.02 | False |
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.Buffers.Text.Tests.Utf8ParserTests*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[Count - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas.Count(Pattern%3a%20%22%5b%5c%5cw%5d%2b%3a%2f%2f%5b%5e%2f%5c%5cs%3f%23%5d%2b%5b%5e%5c%5cs%3f%23%5d%2b(%3f%3a%5c%5c%3f%5b%5e%5c%5cs%23%5d)%3f(%3f%3a%23%5b%5e%5c%5cs%5d)%3f%22%2c%20Options%3a%20NonBacktracking).html>) | 3.10 ms | 4.35 ms | 1.40 | 0.05 | False |
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.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas*'
Name | Value |
---|---|
Architecture | x64 |
OS | Windows 10.0.19042 |
Queue | OwlWindows |
Baseline | 0214a047483067a6a813a34be5b6b1f757600961 |
Compare | 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc |
Diff | Diff |
Configs | CompilationMode:tiered, RunKind:micro |
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
[EncodeUtf8 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments%3a%20UnsafeRelaxed%2cno%20(escaping%20%2f)%20required%2c16).html>) | 13.05 ns | 15.54 ns | 1.19 | 0.06 | False |
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.Encodings.Web.Tests.Perf_Encoders*'
Similar regression: https://github.com/dotnet/perf-autofiling-issues/issues/18510
With Dynamic PGO enabled we would not expect a static PGO update to have much impact on benchmarks. Will have to investigate.
Using the autofiling collator, there is very little overlap between the reports. Given this is all x64 and so using identical PGO data it seems hard to understand why we'd see this kind of pattern.
Notes | Recent Score | Orig Score | x64-win-intel | x64-win-amd | Benchmark |
---|---|---|---|---|---|
noise | 2.05 | 1.15 | 2.05 1.15 |
System.Globalization.Tests.StringEquality.Compare_Same_Upper(Count: 1024, Options: (en-US, OrdinalIgnoreCase)) | |
still analyzing | 1.46 | 1.19 | 1.46 1.19 |
System.Text.Json.Tests.Perf_Get.GetDecimal | |
noise | 1.43 | 1.44 | 1.43 1.44 |
System.Collections.CtorFromCollection(Int32).SortedSet(Size: 512) | |
noise | 1.41 | 1.36 | 1.41 1.36 |
Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark.ForEach_Array | |
newly noisy #87324 |
1.28 | 1.32 | 1.28 1.32 |
System.Collections.ContainsTrue(Int32).ICollection(Size: 512) | |
1.16 | 1.16 | 1.16 1.16 |
System.Buffers.Text.Tests.Utf8ParserTests.TryParseDecimal(value: 123456.789) | ||
1.13 | 1.21 | 1.13 1.21 |
System.Tests.Perf_String.Replace_String(text: "This is a very nice sentence. This is another very nice sentence.", oldValue: "a", newValue: "") | ||
1.12 | 1.15 | 1.12 1.15 |
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, IgnoreNonSpace, False)) | ||
1.12 | 1.15 | 1.12 1.15 |
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, None, False)) | ||
1.12 | 1.15 | 1.12 1.15 |
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (, None, False)) | ||
1.10 | 1.10 | 1.10 1.10 |
Span.IndexerBench.WriteViaIndexer1(length: 1024) | ||
1.09 | 1.42 | 1.09 1.42 |
System.Tests.Perf_UInt32.ToString(value: 4294967295) | ||
1.09 | 1.41 | 1.09 1.41 |
System.Tests.Perf_String.Replace_String(text: "This is a very nice sentence", oldValue: "nice", newValue: "bad") | ||
1.06 | 1.40 | 1.06 1.40 |
System.Text.Json.Tests.Perf_Reader.ReadReturnBytes(IsDataCompact: False, TestCase: DeepTree) | ||
1.05 | 1.26 | 1.05 1.26 |
System.Tests.Perf_Int32.ToString(value: 2147483647) | ||
1.03 | 1.11 | 1.03 1.11 |
System.Collections.ContainsTrue(Int32).Stack(Size: 512) | ||
1.02 | 1.20 | 1.06 1.27 |
0.99 1.14 |
System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count: 1024, Options: (en-US, IgnoreCase)) | |
1.02 | 1.36 | 1.02 1.36 |
System.Text.Json.Serialization.Tests.ReadJson(MyEventsListerViewModel).DeserializeFromUtf8Bytes(Mode: Reflection) | ||
1.02 | 1.19 | 1.02 1.19 |
System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments: UnsafeRelaxed,no (escaping /) required,16) | ||
1.02 | 1.17 | 1.02 1.17 |
System.Reflection.Invoke.StaticMethod4_arrayNotCached_int_string_struct_class | ||
1.01 | 1.35 | 1.01 1.35 |
System.Collections.ContainsTrue(Int32).List(Size: 512) | ||
1.01 | 1.14 | 0.99 1.13 |
1.03 1.16 |
System.Linq.Tests.Perf_OrderBy.OrderByString(NumberOfPeople: 512) | |
1.00 | 1.46 | 1.00 1.46 |
MicroBenchmarks.Serializers.Json_FromStream(MyEventsListerViewModel).SystemTextJsonSourceGen | ||
1.00 | 1.34 | 1.00 1.34 |
System.Text.Json.Serialization.Tests.ReadJson(MyEventsListerViewModel).DeserializeFromString(Mode: SourceGen) | ||
1.00 | 1.06 | 1.00 1.06 |
System.Text.Json.Document.Tests.Perf_EnumerateArray.EnumerateUsingIndexer(TestCase: ArrayOfNumbers) | ||
1.00 | 1.06 | 1.00 1.06 |
System.MathBenchmarks.Single.Asinh | ||
0.99 | 1.10 | 0.99 1.10 |
System.Collections.AddGivenSize(String).HashSet(Size: 512) | ||
0.99 | 1.15 | 0.99 1.15 |
System.Perf_Convert.ToHexString | ||
0.99 | 1.21 | 1.01 1.23 |
0.98 1.20 |
System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count: 1024, Options: (, None)) | |
0.99 | 1.17 | 0.99 1.17 |
System.Collections.Sort(String).List(Size: 512) | ||
0.99 | 1.16 | 0.99 1.16 |
System.Collections.Tests.Add_Remove_SteadyState(String).ConcurrentStack(Count: 512) | ||
0.99 | 1.26 | 0.99 1.31 |
0.99 1.21 |
System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count: 1024, Options: (pl-PL, None)) | |
0.99 | 1.13 | 1.00 1.17 |
0.98 1.09 |
System.Collections.CtorFromCollectionNonGeneric(String).SortedList(Size: 512) | |
0.99 | 1.31 | 0.99 1.31 |
System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count: 1024, Options: (en-US, IgnoreNonSpace)) | ||
0.98 | 1.20 | 0.94 1.20 |
1.02 1.21 |
System.Collections.Sort(String).Array_ComparerClass(Size: 512) | |
0.98 | 1.17 | 0.99 1.19 |
0.97 1.16 |
System.Collections.Sort(String).LinqQuery(Size: 512) | |
0.98 | 1.17 | 0.98 1.16 |
0.97 1.19 |
System.Collections.Sort(String).LinqOrderByExtension(Size: 512) | |
0.98 | 1.13 | 0.97 1.19 |
0.99 1.08 |
MicroBenchmarks.Serializers.Json_FromString(MyEventsListerViewModel).SystemTextJsonReflection | |
0.98 | 1.16 | 0.98 1.16 |
System.Collections.CreateAddAndRemove(String).SortedList(Size: 512) | ||
0.97 | 1.16 | 0.97 1.16 |
System.Text.RegularExpressions.Tests.Perf_Regex_Common.Email_IsMatch(Options: Compiled) | ||
0.97 | 1.21 | 0.99 1.21 |
0.95 1.21 |
System.Collections.TryGetValueTrue(String, String).SortedList(Size: 512) | |
0.96 | 1.18 | 0.96 1.18 |
System.Collections.ContainsTrueComparer(String).ImmutableSortedSet(Size: 512) | ||
0.96 | 1.18 | 0.96 1.18 |
System.Collections.Sort(String).Array_ComparerStruct(Size: 512) | ||
0.96 | 1.17 | 1.00 1.21 |
0.92 1.14 |
System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count: 1024, Options: (en-US, None)) | |
0.96 | 1.21 | 0.96 1.22 |
0.96 1.21 |
System.Collections.Sort(String).Array(Size: 512) | |
0.96 | 1.23 | 0.96 1.23 |
System.Collections.ContainsKeyTrue(String, String).ImmutableSortedDictionary(Size: 512) | ||
0.96 | 1.21 | 0.96 1.21 |
0.96 1.21 |
System.Collections.IndexerSet(String).SortedList(Size: 512) | |
0.95 | 1.20 | 0.95 1.20 |
System.Text.Tests.Perf_StringBuilder.Insert_Strings | ||
0.95 | 1.19 | 0.95 1.19 |
System.Collections.ContainsTrueComparer(String).SortedSet(Size: 512) | ||
0.95 | 1.31 | 0.95 1.31 |
System.Text.Tests.Perf_StringBuilder.ToString_MultipleSegments(length: 100) | ||
0.94 | 1.16 | 0.99 1.21 |
0.90 1.12 |
System.Globalization.Tests.StringEquality.Compare_DifferentFirstChar(Count: 1024, Options: (, IgnoreCase)) | |
0.94 | 1.14 | 0.94 1.14 |
System.Tests.Perf_String.ToLowerInvariant(s: "This is a much longer piece of text that might benefit more from vectorization.") | ||
0.94 | 1.20 | 0.91 1.21 |
0.96 1.20 |
System.Collections.ContainsKeyTrue(String, String).SortedList(Size: 512) | |
0.93 | 1.22 | 0.93 1.22 |
System.Tests.Perf_Int32.ToString(value: 12345) | ||
0.93 | 1.26 | 0.93 1.26 |
System.Collections.TryGetValueTrue(String, String).ImmutableSortedDictionary(Size: 512) | ||
0.92 | 1.23 | 0.92 1.23 |
System.Collections.ContainsTrue(String).SortedSet(Size: 512) | ||
0.91 | 1.22 | 0.91 1.22 |
System.Collections.ContainsKeyTrue(String, String).SortedDictionary(Size: 512) | ||
0.91 | 1.22 | 0.91 1.22 |
System.Collections.TryGetValueTrue(String, String).SortedDictionary(Size: 512) | ||
0.90 | 1.40 | 0.90 1.40 |
System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas.Count(Pattern: "[\w]+://[^/\s?#]+[^\s?#]+(?:\?[^\s#])?(?:#[^\s])?", Options: NonBacktracking) | ||
0.90 | 1.16 | 0.87 1.12 |
0.93 1.21 |
System.Collections.Sort(String).Array_Comparison(Size: 512) | |
0.90 | 1.44 | 0.90 1.44 |
System.Tests.Perf_Enum.ToString_Format_Flags_Large(value: All, format: "d") | ||
0.90 | 1.15 | 0.90 1.15 |
System.Memory.ReadOnlySpan.IndexOfString(input: "foobardzsdzs", value: "rddzs", comparisonType: InvariantCulture) | ||
0.89 | 1.18 | 0.98 1.24 |
0.81 1.13 |
System.Tests.Perf_String.TrimStart_CharArr(s: " Test", c: [' ', ' ']) | |
0.86 | 1.29 | 0.86 1.29 |
System.Tests.Perf_String.TrimEnd(s: "Test ") | ||
0.85 | 1.14 | 0.85 1.14 |
System.Memory.ReadOnlySpan.IndexOfString(input: "string1", value: "string2", comparisonType: InvariantCulture) | ||
0.84 | 1.27 | 0.84 1.27 |
System.Tests.Perf_String.ToLowerInvariant(s: "TeSt") | ||
0.83 | 1.44 | 1.01 1.42 |
0.69 1.46 |
System.Tests.Perf_String.TrimStart(s: " Test") | |
0.82 | 1.51 | 0.82 1.51 |
System.Tests.Perf_String.ToUpperInvariant(s: "test") | ||
0.81 | 1.24 | 0.81 1.24 |
System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar(Options: (, None, False)) | ||
0.80 | 1.18 | 0.80 1.18 |
System.Memory.ReadOnlySpan.IndexOfString(input: "AAAAA5AAAA", value: "5", comparisonType: InvariantCulture) | ||
0.80 | 1.42 | 0.80 1.42 |
System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 10, i2: 1) | ||
0.79 | 1.35 | 0.79 1.35 |
System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 7, i2: 4) | ||
0.79 | 1.24 | 0.79 1.24 |
System.Tests.Perf_String.ToLowerInvariant(s: "TEST") | ||
0.77 | 1.22 | 0.77 1.22 |
System.Tests.Perf_UInt32.ToString(value: 12345) | ||
0.75 | 1.20 | 0.75 1.20 |
System.Tests.Perf_String.Trim_CharArr(s: " Te st ", c: [' ', ' ']) | ||
0.74 | 1.28 | 0.74 1.28 |
System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 0, i2: 8) | ||
0.73 | 1.25 | 0.73 1.25 |
System.Tests.Perf_String.Trim_CharArr(s: " Test", c: [' ', ' ']) | ||
0.70 | 1.15 | 0.70 1.15 |
System.Tests.Perf_String.Trim_CharArr(s: "Test ", c: [' ', ' ']) |
Also most of these are already mitigated, eg
It looks like we took another Static PGO update on June 5, so perhaps it was static PGO both times?
Looking at the worst-case for intel, this one has persisted. Note the benchmark became noisier once dynamic PGO was introduced -- I had hopes that we'd see an overall reduction in noise with dynamic PGO, but am now starting to wonder if that was just wishful thinking.
The jit is still fairly sensitive to small details in the PGO data, and there is an inherent degree of randomness in live PGO data, both from nondeterminisim in the test, and deliberate nondeterminism in the collection.
So, two tasks for follow-up:
look at a benchmark that regressed / improved and see what role (if any) static PGO played. Perhaps this one:
look at a benchmark like the above which did not improve.
Looking at the example just above, it spends ~15% of benchmark intervals in corelib (byref write barrier, memcpy ,etc)
00.89% 4.6E+05 ? Unknown
18.36% 9.53E+06 Tier-1 [System.Text.Json]System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon].OnTryRead(value class System.Text.Json.Utf8JsonReader&,class System.Type,class System.Text.Json.JsonSerializerOptions,value class System.Text.Json.ReadStack&,!0&)
14.81% 7.69E+06 native coreclr.dll
09.24% 4.8E+06 Tier-1 [System.Text.Json]System.Text.Json.Serialization.JsonConverter`1[System.__Canon].TryRead(value class System.Text.Json.Utf8JsonReader&,class System.Type,class System.Text.Json.JsonSerializerOptions,value class System.Text.Json.ReadStack&,!0&,bool&)
08.13% 4.22E+06 Tier-1 [System.Text.Json]JsonHelpers.TryParseDateTimeOffset(value class System.ReadOnlySpan`1<unsigned int8>,value class DateTimeParseData&)
07.24% 3.76E+06 Tier-1 [System.Text.Json]Utf8JsonReader.ReadSingleSegment()
06.97% 3.62E+06 Tier-1 [System.Private.CoreLib]IndexOfAnyAsciiSearcher.IndexOfAnyVectorized(unsigned int8&,int32,value class System.Runtime.Intrinsics.Vector256`1<unsigned int8>&)
05.60% 2.91E+06 Tier-1 [System.Text.Json]Utf8JsonReader.ConsumeNextToken(unsigned int8)
04.89% 2.54E+06 Tier-1 [System.Text.Json]Utf8JsonReader.TryGetDateTimeOffsetCore(value class System.DateTimeOffset&)
03.51% 1.82E+06 Tier-1 [System.Text.Json]Utf8JsonReader.ConsumeValue(unsigned int8)
02.70% 1.4E+06 Tier-1 [System.Text.Json]System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1[System.Nullable`1[System.DateTimeOffset]].ReadJsonAndSetMember(class System.Object,value class System.Text.Json.ReadStack&,value class System.Text.Json.Utf8JsonReader&)
02.35% 1.22E+06 Tier-1 [System.Text.Json]JsonHelpers.TryCreateDateTimeOffset(value class System.DateTime,value class DateTimeParseData&,value class System.DateTimeOffset&)
02.10% 1.09E+06 Tier-1 [System.Text.Json]System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1[System.__Canon].ReadJsonAndSetMember(class System.Object,value class System.Text.Json.ReadStack&,value class System.Text.Json.Utf8JsonReader&)
01.56% 8.1E+05 Tier-1 [System.Text.Json]System.Text.Json.Serialization.JsonCollectionConverter`2[System.__Canon,System.__Canon].OnTryRead(value class System.Text.Json.Utf8JsonReader&,class System.Type,class System.Text.Json.JsonSerializerOptions,value class System.Text.Json.ReadStack&,!0&)
01.17% 6.1E+05 Tier-1 [System.Text.Json]System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon].Add(required_modifier System.Runtime.InteropServices.InAttribute !1&,value class System.Text.Json.ReadStack&)
01.10% 5.7E+05 Tier-1 [System.Private.CoreLib]Utf8Utility.TranscodeToUtf16(unsigned int8*,int32,wchar*,int32,unsigned int8*&,wchar*&)
01.04% 5.4E+05 Tier-1 [System.Text.Json]JsonReaderHelper.TranscodeHelper(value class System.ReadOnlySpan`1<unsigned int8>)
My guess is that https://github.com/dotnet/runtime/pull/87076 invalidated native PGO for important parts of corelib, and this destablized perf for a time, and then https://github.com/dotnet/runtime/pull/87090 produced matching PGO data and things went back to "normal."
Naive q, could we imagine collecting data with and without new PGO on otherwise identical bits every time PGO data updates? That would immediately show how much of any change was the PGO update.
Locally I consistently see SortedSet as faster with the "diff" compiler (which is at 0071d924c2537c2372101fa9fe64a2b37b9e2ca8) |
Method | Job | Toolchain | Size | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SortedSet | Job-VCLHWJ | \base-rel\corerun.exe | 512 | 7.859 us | 0.5589 us | 0.6437 us | 7.936 us | 7.071 us | 8.937 us | 1.00 | 0.00 | 3.5734 | 0.4810 | 22.07 KB | 1.00 | |
SortedSet | Job-QWFOGA | \diff-rel\corerun.exe | 512 | 7.316 us | 0.1808 us | 0.2082 us | 7.280 us | 7.074 us | 7.779 us | 0.94 | 0.09 | 3.5734 | 0.4810 | 22.07 KB | 1.00 |
Since this benchmark is pretty noisy I think we can write this off (for now) as noise.
As for the (implied) hypothesis that the benchmarks above all spend significant time in native code: System.Text.Json.Tests.Perf_Get.GetDecimal does not, and is still regressed, at least for x86 and amd64 (but not intel):
38.51% 1.858E+07 Tier-1 [System.Private.CoreLib]Utf8Parser.TryParseNumber(value class System.ReadOnlySpan`1<unsigned int8>,value class NumberBuffer&,int32&,value class ParseNumberOptions,bool&)
22.26% 1.074E+07 Tier-1 [System.Private.CoreLib]Number.TryNumberToDecimal(value class NumberBuffer&,value class System.Decimal&)
22.22% 1.072E+07 Tier-1 [System.Text.Json]Utf8JsonReader.TryGetDecimalCore(value class System.Decimal&,value class System.ReadOnlySpan`1<unsigned int8>)
07.73% 3.73E+06 Tier-1 [System.Private.CoreLib]Decimal+DecCalc.DecAddSub(value class DecCalc&,value class DecCalc&,bool)
07.46% 3.6E+06 Tier-1 [MicroBenchmarks]Perf_Get.GetDecimal()
00.41% 2E+05 Tier-1 [System.Text.Json]Utf8JsonReader.TryGetNumber(value class System.ReadOnlySpan`1<unsigned int8>,int32&)
00.35% 1.7E+05 native clrjit.dll
00.35% 1.7E+05 native coreclr.dll
00.29% 1.4E+05 Tier-1 [System.Text.Json]Utf8JsonReader..ctor(value class System.ReadOnlySpan`1<unsigned int8>,bool,value class System.Text.Json.JsonReaderState)
00.25% 1.2E+05 native ntoskrnl.exe
00.06% 3E+04 Tier-1 [System.Private.CoreLib]SpanHelpers.NonPackedIndexOfValueType(!!0&,!!0,int32)
Finally had time to drill in. Looking now with base f4ef5c8af72304f679663ba134035206baf84095 and diff 0071d924c2537c2372101fa9fe64a2b37b9e2ca8.
I can repro a small regression locally:
Method | Job | Toolchain | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Allocated | Alloc Ratio |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GetDecimal | Job-TEKZDW | \base-rel\corerun.exe | 3.681 us | 0.0491 us | 0.0459 us | 3.698 us | 3.606 us | 3.735 us | 1.00 | 0.00 | - | NA |
GetDecimal | Job-NKOPKC | \diff-rel\corerun.exe | 3.878 us | 0.0607 us | 0.0568 us | 3.895 us | 3.748 us | 3.947 us | 1.05 | 0.02 | - | NA |
There are a few surprises:
For the stale PGO, looks like the optimization repo is running ~2 week old builds? EG the update in https://github.com/dotnet/runtime/pull/86698 on June 2nd brought in data from the May 23 build 20230523.4, and that build used the runtime bits from dotnet-sdk-8.0.100-preview.5.23273.15 (also May 23).
So the recent PGO updates are:
The diff sync point is 02-Jun so PGO data should have been compatible once more by 06-Jun.
Thus if the regression was related to static PGO we'd expect it to be fixed by now. But that does not seem to be the case.
Looking at profiles it appears there is significant time spent in Memmove
that does not show up in the baseline run. But I am not sure this makes sense as the apparent caller is TryParseNumber
and the codegen for that method in base/diff is quite similar (save for some block ordering diffs caused by the stale PGO). Perhaps the call comes from a callee that has tail called into Memmove
so will check for that next.
07.10% 3.84E+06 Tier-1 [System.Private.CoreLib]Buffer.Memmove(unsigned int8&,unsigned int8&,unsigned int)
Poked at this for quite a while and still have no idea why the base/diff profiles diverge. Did a second profile run with similar results; both show the diff run is invoking Memmove
while the base run doesn't seem to be doing this. This is with --apples
mode in BDN so the two sets of runs should be doing the same amount of work. Memmove
tails calls to something but don't see unexpected samples piling up anywhere else or attributed to nothing.
Here's what PerfView shows for the first BDN interval of each run
BASE -- 236.986ms
DIFF -- 260.216ms
and PerfView's regression report
(not sure what it does when there is a novel entry on one side, perhaps it attributes it to the common parent).
At any rate the only difference in codegen for TryParseNumber
is layout, and the layout difference comes from static PGO, so perhaps that is the culprit.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch See info in area-owners.md if you want to be subscribed.
Author: | performanceautofiler[bot] |
---|---|
Assignees: | AndyAyersMS |
Labels: | `os-windows`, `arch-x64`, `area-CodeGen-coreclr`, `runtime-coreclr`, `PGO`, `needs-area-label` |
Milestone: | 8.0.0 |
Naive q, could we imagine collecting data with and without new PGO on otherwise identical bits every time PGO data updates? That would immediately show how much of any change was the PGO update.
In general it would be nice if the benchmark system could anticipate impactful changes and run them in isolation. I don't know how challenging that would be to arrange as the whole system is capacity limited. As is the benchmark system seems to end up batching 10 or so commits per run, though sometimes it is less and sometimes much more.
We expect to see less impact from managed static PGO updates going forward as most benchmarks should now be using dynamic PGO data instead. PGO updates as a whole may still be impactful because they also update native PGO, and there are a number of benchmarks (like some of the ones here) that spend significant time in native code.
Seems to have calmed down recently
Also looks like noise
Not seeing anything actionable here, and most tests are either noisy or are still improved over the long run.
Run Information
Regressions in System.Collections.ContainsTrue<Int32>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Payloads
Baseline Compare
Run Information
Regressions in System.Tests.Perf_String
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Payloads
Baseline Compare
Run Information
Regressions in System.Collections.Sort<String>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Payloads
Baseline Compare