Repository navigation
[Perf] Windows/x64: 6 Regressions on 12/3/2022 11:06:27 AM #10342
Copy link
Copy link
Open
Description
Run Information
| Architecture | x64 |
|---|---|
| OS | Windows 10.0.18362 |
| Baseline | 02c144afac6efe0f716e64ea0a701e2eec995866 |
| Compare | 4ce23f46ed20683a1b6649e9a43e09459007c9d8 |
| Diff | Diff |
Regressions in System.Collections.IterateForEach<String>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| ImmutableQueue - Duration of single invocation | 4.19 μs | 4.83 μs | 1.15 | 0.14 | False |
Repro
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.IterateForEach<String>*'Details
Payloads
Histogram
System.Collections.IterateForEach<String>.ImmutableQueue(Size: 512)
Description of detection logic
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 4.831678030430256 > 4.569087437434715.
IsChangePoint: Marked as a change because one of 11/2/2022 9:35:40 AM, 11/16/2022 11:42:33 AM, 12/3/2022 7:24:45 AM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -7.534405755987455 (T) = (0 -5286.684666789541) / Math.Sqrt((74520.94676872541 / (43)) + (64010.42986593407 / (9))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (43) + (9) - 2, .025) and -0.15478274403092207 = (4578.077299921947 - 5286.684666789541) / 4578.077299921947 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
| Architecture | x64 |
|---|---|
| OS | Windows 10.0.18362 |
| Baseline | 02c144afac6efe0f716e64ea0a701e2eec995866 |
| Compare | 4ce23f46ed20683a1b6649e9a43e09459007c9d8 |
| Diff | Diff |
Regressions in Benchmark.GetChildKeysTests
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| AddChainedConfigurationEmpty - Duration of single invocation | 35.01 ms | 39.31 ms | 1.12 | 0.08 | False | Trace | Trace |
Repro
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Benchmark.GetChildKeysTests*'Details
Payloads
Histogram
Benchmark.GetChildKeysTests.AddChainedConfigurationEmpty
Description of detection logic
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 39.31305777777778 > 36.73220634615385.
IsChangePoint: Marked as a change because one of 11/2/2022 9:35:40 AM, 12/3/2022 7:24:45 AM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -16.61203418786294 (T) = (0 -39127230.82010582) / Math.Sqrt((2099943413049.9539 / (43)) + (11820056502.446426 / (9))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (43) + (9) - 2, .025) and -0.1050664998702658 = (35407127.82868663 - 39127230.82010582) / 35407127.82868663 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.
```### Baseline Jit Disasm
```assembly
; Benchmark.GetChildKeysTests.AddChainedConfigurationEmpty()
sub rsp,28
mov rdx,rcx
mov rcx,[rdx+10]
mov rdx,[rdx+28]
xor r8d,r8d
cmp [rcx],ecx
call qword ptr [7FFE57C8C928]; Microsoft.Extensions.Configuration.ChainedConfigurationProvider.GetChildKeys(System.Collections.Generic.IEnumerable`1<System.String>, System.String)
nop
add rsp,28
ret
; Total bytes of code 32
; Microsoft.Extensions.Configuration.ChainedConfigurationProvider.GetChildKeys(System.Collections.Generic.IEnumerable`1<System.String>, System.String)
push rbp
push r14
push rdi
push rsi
push rbx
sub rsp,40
lea rbp,[rsp+60]
xor eax,eax
mov [rbp-30],rax
mov [rbp-28],rax
mov [rbp-40],rsp
mov rsi,rdx
test r8,r8
je short M01_L00
mov rcx,[rcx+8]
mov rdx,r8
mov r11,7FFE57600850
call qword ptr [r11]
mov rdi,rax
jmp short M01_L01
M01_L00:
mov rdi,[rcx+8]
M01_L01:
mov rcx,offset MT_System.Collections.Generic.List`1[[System.String, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rbx,rax
mov rdx,10441801F08
mov rdx,[rdx]
lea rcx,[rbx+8]
call CORINFO_HELP_ASSIGN_REF
mov rcx,rdi
mov r11,7FFE57600820
call qword ptr [r11]
mov rcx,rax
mov r11,7FFE57600828
call qword ptr [r11]
mov rdi,rax
mov [rbp-38],rdi
mov rcx,rdi
mov r11,7FFE57600830
call qword ptr [r11]
test eax,eax
je short M01_L05
M01_L02:
mov rcx,rdi
mov r11,7FFE57600838
call qword ptr [r11]
mov rcx,rax
mov r11,7FFE57600840
call qword ptr [r11]
mov r8,rax
inc dword ptr [rbx+14]
mov rcx,[rbx+8]
mov edx,[rbx+10]
cmp [rcx+8],edx
jbe short M01_L03
lea eax,[rdx+1]
mov [rbx+10],eax
movsxd rdx,edx
call CORINFO_HELP_ARRADDR_ST
jmp short M01_L04
M01_L03:
mov rcx,rbx
mov rdx,r8
call qword ptr [7FFE578AD198]; System.Collections.Generic.List`1[[System.__Canon, System.Private.CoreLib]].AddWithResize(System.__Canon)
M01_L04:
mov rcx,rdi
mov r11,7FFE57600830
call qword ptr [r11]
test eax,eax
jne short M01_L02
M01_L05:
mov rcx,rdi
mov r11,7FFE57600848
call qword ptr [r11]
mov rcx,rbx
mov rdx,rsi
call qword ptr [7FFE578AD1C8]; System.Collections.Generic.List`1[[System.__Canon, System.Private.CoreLib]].AddRange(System.Collections.Generic.IEnumerable`1<System.__Canon>)
mov rdx,10441808568
mov r8,[rdx]
cmp dword ptr [rbx+10],1
jle short M01_L07
mov rax,[rbx+8]
mov r14d,[rbx+10]
test rax,rax
je short M01_L08
mov rdx,offset MT_System.String[]
cmp [rax],rdx
jne short M01_L09
cmp [rax+8],r14d
jb short M01_L10
add rax,10
M01_L06:
mov [rbp-30],rax
mov [rbp-28],r14d
lea rdx,[rbp-30]
mov rcx,offset MT_System.Collections.Generic.ArraySortHelper`1[[System.String, System.Private.CoreLib]]
call qword ptr [7FFE579AF4E0]; System.Collections.Generic.ArraySortHelper`1[[System.__Canon, System.Private.CoreLib]].Sort(System.Span`1<System.__Canon>, System.Comparison`1<System.__Canon>)
M01_L07:
inc dword ptr [rbx+14]
mov rax,rbx
add rsp,40
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
M01_L08:
test r14d,r14d
jne short M01_L10
xor eax,eax
xor r14d,r14d
jmp short M01_L06
M01_L09:
call qword ptr [7FFE57AED018]
int 3
M01_L10:
call qword ptr [7FFE57AED060]
int 3
push rbp
push r14
push rdi
push rsi
push rbx
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+60]
cmp qword ptr [rbp-38],0
je short M01_L11
mov rcx,[rbp-38]
mov r11,7FFE57600848
call qword ptr [r11]
M01_L11:
nop
add rsp,30
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
; Total bytes of code 478Compare Jit Disasm
; Benchmark.GetChildKeysTests.AddChainedConfigurationEmpty()
sub rsp,28
mov rdx,rcx
mov rcx,[rdx+10]
mov rdx,[rdx+28]
xor r8d,r8d
cmp [rcx],ecx
call qword ptr [7FFF7DD84CF8]; Microsoft.Extensions.Configuration.ChainedConfigurationProvider.GetChildKeys(System.Collections.Generic.IEnumerable`1<System.String>, System.String)
nop
add rsp,28
ret
; Total bytes of code 32; Microsoft.Extensions.Configuration.ChainedConfigurationProvider.GetChildKeys(System.Collections.Generic.IEnumerable`1<System.String>, System.String)
push rbp
push r14
push rdi
push rsi
push rbx
sub rsp,40
lea rbp,[rsp+60]
xor eax,eax
mov [rbp-30],rax
mov [rbp-28],rax
mov [rbp-40],rsp
mov rsi,rdx
test r8,r8
je short M01_L00
mov rcx,[rcx+8]
mov rdx,r8
mov r11,7FFF7D6B08E0
call qword ptr [r11]
mov rdi,rax
jmp short M01_L01
M01_L00:
mov rdi,[rcx+8]
M01_L01:
mov rcx,offset MT_System.Collections.Generic.List`1[[System.String, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rbx,rax
mov rdx,1F256C01F10
mov rdx,[rdx]
lea rcx,[rbx+8]
call CORINFO_HELP_ASSIGN_REF
mov rcx,rdi
mov r11,7FFF7D6B08B0
call qword ptr [r11]
mov rcx,rax
mov r11,7FFF7D6B08B8
call qword ptr [r11]
mov rdi,rax
mov [rbp-38],rdi
mov rcx,rdi
mov r11,7FFF7D6B08C0
call qword ptr [r11]
test eax,eax
je short M01_L05
M01_L02:
mov rcx,rdi
mov r11,7FFF7D6B08C8
call qword ptr [r11]
mov rcx,rax
mov r11,7FFF7D6B08D0
call qword ptr [r11]
mov r8,rax
inc dword ptr [rbx+14]
mov rcx,[rbx+8]
mov edx,[rbx+10]
cmp [rcx+8],edx
jbe short M01_L03
lea eax,[rdx+1]
mov [rbx+10],eax
movsxd rdx,edx
call CORINFO_HELP_ARRADDR_ST
jmp short M01_L04
M01_L03:
mov rcx,rbx
mov rdx,r8
call qword ptr [7FFF7D95F198]; System.Collections.Generic.List`1[[System.__Canon, System.Private.CoreLib]].AddWithResize(System.__Canon)
M01_L04:
mov rcx,rdi
mov r11,7FFF7D6B08C0
call qword ptr [r11]
test eax,eax
jne short M01_L02
M01_L05:
mov rcx,rdi
mov r11,7FFF7D6B08D8
call qword ptr [r11]
mov rcx,rbx
mov rdx,rsi
call qword ptr [7FFF7D95F1C8]; System.Collections.Generic.List`1[[System.__Canon, System.Private.CoreLib]].AddRange(System.Collections.Generic.IEnumerable`1<System.__Canon>)
mov rdx,1F256C08568
mov r8,[rdx]
cmp dword ptr [rbx+10],1
jle short M01_L07
mov rax,[rbx+8]
mov r14d,[rbx+10]
test rax,rax
je short M01_L08
mov rdx,offset MT_System.String[]
cmp [rax],rdx
jne short M01_L09
cmp [rax+8],r14d
jb short M01_L10
add rax,10
M01_L06:
mov [rbp-30],rax
mov [rbp-28],r14d
lea rdx,[rbp-30]
mov rcx,offset MT_System.Collections.Generic.ArraySortHelper`1[[System.String, System.Private.CoreLib]]
call qword ptr [7FFF7DA834E0]; System.Collections.Generic.ArraySortHelper`1[[System.__Canon, System.Private.CoreLib]].Sort(System.Span`1<System.__Canon>, System.Comparison`1<System.__Canon>)
M01_L07:
inc dword ptr [rbx+14]
mov rax,rbx
add rsp,40
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
M01_L08:
test r14d,r14d
jne short M01_L10
xor eax,eax
xor r14d,r14d
jmp short M01_L06
M01_L09:
call qword ptr [7FFF7DBC3018]
int 3
M01_L10:
call qword ptr [7FFF7DBC3060]
int 3
push rbp
push r14
push rdi
push rsi
push rbx
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+60]
cmp qword ptr [rbp-38],0
je short M01_L11
mov rcx,[rbp-38]
mov r11,7FFF7D6B08D8
call qword ptr [r11]
M01_L11:
nop
add rsp,30
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
; Total bytes of code 478Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | Windows 10.0.18362 |
| Baseline | 02c144afac6efe0f716e64ea0a701e2eec995866 |
| Compare | 4ce23f46ed20683a1b6649e9a43e09459007c9d8 |
| Diff | Diff |
Regressions in System.Collections.CreateAddAndClear<Int32>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| ICollection - Duration of single invocation | 1.67 μs | 1.83 μs | 1.09 | 0.01 | False |
Repro
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.CreateAddAndClear<Int32>*'Details
Payloads
Histogram
System.Collections.CreateAddAndClear<Int32>.ICollection(Size: 512)
Description of detection logic
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 1.8281249999999998 > 1.7509602453918214.
IsChangePoint: Marked as a change because one of 9/23/2022 1:16:35 AM, 11/22/2022 2:20:42 AM, 12/3/2022 7:24:45 AM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -74.93713233029301 (T) = (0 -1832.3601314471698) / Math.Sqrt((111.81777452145562 / (43)) + (22.930842473058515 / (9))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (43) + (9) - 2, .025) and -0.10228486072369541 = (1662.3290373816346 - 1832.3601314471698) / 1662.3290373816346 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | Windows 10.0.18362 |
| Baseline | 02c144afac6efe0f716e64ea0a701e2eec995866 |
| Compare | 4ce23f46ed20683a1b6649e9a43e09459007c9d8 |
| Diff | Diff |
Regressions in System.Collections.ContainsTrueComparer<Int32>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| HashSet - Duration of single invocation | 5.36 μs | 5.88 μs | 1.10 | 0.11 | False |
Repro
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsTrueComparer<Int32>*'Details
Payloads
Histogram
System.Collections.ContainsTrueComparer<Int32>.HashSet(Size: 512)
Description of detection logic
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 5.881900212314226 > 5.612522240333737.
IsChangePoint: Marked as a change because one of 9/26/2022 8:26:31 AM, 9/27/2022 11:22:50 AM, 11/2/2022 9:35:40 AM, 12/3/2022 7:24:45 AM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -91.76625314476843 (T) = (0 -5857.954939086867) / Math.Sqrt((262.8382988317587 / (43)) + (218.82935183017463 / (9))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (43) + (9) - 2, .025) and -0.09458332807652296 = (5351.767004692889 - 5857.954939086867) / 5351.767004692889 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | Windows 10.0.18362 |
| Baseline | 02c144afac6efe0f716e64ea0a701e2eec995866 |
| Compare | 4ce23f46ed20683a1b6649e9a43e09459007c9d8 |
| Diff | Diff |
Regressions in PerfLabTests.CastingPerf2.CastingPerf
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| FooObjIsFoo - Duration of single invocation | 773.69 μs | 876.69 μs | 1.13 | 0.06 | False | Trace | Trace |
Repro
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'PerfLabTests.CastingPerf2.CastingPerf*'Details
Payloads
Histogram
PerfLabTests.CastingPerf2.CastingPerf.FooObjIsFoo
Description of detection logic
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 876.693587962963 > 815.8488030133929.
IsChangePoint: Marked as a change because one of 9/29/2022 7:42:19 AM, 10/2/2022 11:57:04 PM, 10/11/2022 8:42:28 PM, 11/7/2022 4:10:19 PM, 11/18/2022 7:31:41 AM, 12/3/2022 7:24:45 AM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -72.3702513368473 (T) = (0 -873497.8879263537) / Math.Sqrt((57746196.250195265 / (43)) + (3470923.2555119065 / (9))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (43) + (9) - 2, .025) and -0.12224536734810439 = (778348.4016427285 - 873497.8879263537) / 778348.4016427285 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.
```### Baseline Jit Disasm
```assembly
; PerfLabTests.CastingPerf2.CastingPerf.FooObjIsFoo()
push rdi
push rsi
sub rsp,28
xor esi,esi
mov edi,[7FFD45AFA560]
test edi,edi
jle short M00_L02
M00_L00:
mov rcx,1D4B10064F0
mov rdx,[rcx]
mov rax,rdx
test rax,rax
je short M00_L01
mov rcx,offset MT_PerfLabTests.CastingPerf2.Foo
cmp [rax],rcx
je short M00_L01
call qword ptr [7FFD4577B8B8]
M00_L01:
mov rcx,1D4B1006540
mov rdx,rax
call CORINFO_HELP_ASSIGN_REF
inc esi
cmp esi,edi
jl short M00_L00
M00_L02:
add rsp,28
pop rsi
pop rdi
ret
; Total bytes of code 91
Compare Jit Disasm
; PerfLabTests.CastingPerf2.CastingPerf.FooObjIsFoo()
push rdi
push rsi
push rbp
push rbx
sub rsp,28
xor esi,esi
mov edi,[7FFB3A8CF5B8]
test edi,edi
jle short M00_L02
mov rcx,210A60064F0
mov rbx,[rcx]
mov rbp,210A6006540
M00_L00:
mov rdx,rbx
mov rax,rdx
test rax,rax
je short M00_L01
mov rcx,offset MT_PerfLabTests.CastingPerf2.Foo
cmp [rax],rcx
je short M00_L01
call qword ptr [7FFB3A55D8B8]
M00_L01:
mov rcx,rbp
mov rdx,rax
call CORINFO_HELP_ASSIGN_REF
inc esi
cmp esi,edi
jl short M00_L00
M00_L02:
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
ret
; Total bytes of code 101Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Architecture | x64 |
|---|---|
| OS | Windows 10.0.18362 |
| Baseline | 02c144afac6efe0f716e64ea0a701e2eec995866 |
| Compare | 4ce23f46ed20683a1b6649e9a43e09459007c9d8 |
| Diff | Diff |
Regressions in System.Buffers.Text.Tests.Utf8ParserTests
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| TryParseInt32 - Duration of single invocation | 3.92 ns | 5.24 ns | 1.34 | 0.02 | False | Trace | Trace |
Repro
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Buffers.Text.Tests.Utf8ParserTests*'Details
Payloads
Histogram
System.Buffers.Text.Tests.Utf8ParserTests.TryParseInt32(value: 4)
Description of detection logic
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 5.239059323600074 > 4.112909541370754.
IsChangePoint: Marked as a change because one of 9/29/2022 7:42:19 AM, 10/2/2022 11:57:04 PM, 10/17/2022 3:19:47 PM, 11/7/2022 4:10:19 PM, 11/18/2022 7:31:41 AM, 12/3/2022 7:24:45 AM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -95.35506503456399 (T) = (0 -5.2470407126722005) / Math.Sqrt((0.00018925711089593696 / (43)) + (0.001703176400138018 / (9))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (43) + (9) - 2, .025) and -0.3384896771495009 = (3.9201204179971714 - 5.2470407126722005) / 3.9201204179971714 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.
```### Baseline Jit Disasm
```assembly
; System.Buffers.Text.Tests.Utf8ParserTests.TryParseInt32(Utf8TestCase)
sub rsp,48
xor eax,eax
mov [rsp+28],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
mov [rsp+40],rax
mov rcx,[rdx+8]
test rcx,rcx
je short M00_L01
lea rdx,[rcx+10]
mov r8d,[rcx+8]
M00_L00:
mov [rsp+28],rdx
mov [rsp+30],r8d
lea rcx,[rsp+28]
lea rdx,[rsp+40]
lea r8,[rsp+38]
xor r9d,r9d
call qword ptr [7FFD209991F8]; System.Buffers.Text.Utf8Parser.TryParse(System.ReadOnlySpan`1<Byte>, Int32 ByRef, Int32 ByRef, Char)
nop
add rsp,48
ret
M00_L01:
xor edx,edx
xor r8d,r8d
jmp short M00_L00
; Total bytes of code 90
; System.Buffers.Text.Utf8Parser.TryParse(System.ReadOnlySpan`1<Byte>, Int32 ByRef, Int32 ByRef, Char)
sub rsp,28
movzx eax,r9w
test eax,eax
jne short M01_L01
M01_L00:
add rsp,28
jmp qword ptr [7FFD20999258]; System.Buffers.Text.Utf8Parser.TryParseInt32D(System.ReadOnlySpan`1<Byte>, Int32 ByRef, Int32 ByRef)
M01_L01:
movzx eax,r9w
or eax,20
cmp eax,67
jg short M01_L02
cmp eax,64
je short M01_L00
cmp eax,67
jne short M01_L04
jmp short M01_L00
M01_L02:
cmp eax,6E
je short M01_L03
cmp eax,72
je short M01_L00
cmp eax,78
jne short M01_L04
add rsp,28
jmp qword ptr [7FFD20999438]
M01_L03:
add rsp,28
jmp qword ptr [7FFD209992B8]
M01_L04:
call qword ptr [7FFD207AD6F0]
int 3
; Total bytes of code 88Compare Jit Disasm
; System.Buffers.Text.Tests.Utf8ParserTests.TryParseInt32(Utf8TestCase)
sub rsp,48
xor eax,eax
mov [rsp+28],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
mov [rsp+40],rax
mov rcx,[rdx+8]
test rcx,rcx
je short M00_L01
lea rdx,[rcx+10]
mov r8d,[rcx+8]
M00_L00:
mov [rsp+28],rdx
mov [rsp+30],r8d
lea rcx,[rsp+28]
lea rdx,[rsp+40]
lea r8,[rsp+38]
xor r9d,r9d
call qword ptr [7FFE00EEB1F8]; System.Buffers.Text.Utf8Parser.TryParse(System.ReadOnlySpan`1<Byte>, Int32 ByRef, Int32 ByRef, Char)
nop
add rsp,48
ret
M00_L01:
xor edx,edx
xor r8d,r8d
jmp short M00_L00
; Total bytes of code 90; System.Buffers.Text.Utf8Parser.TryParse(System.ReadOnlySpan`1<Byte>, Int32 ByRef, Int32 ByRef, Char)
sub rsp,28
movzx eax,r9w
test eax,eax
jne short M01_L01
M01_L00:
add rsp,28
jmp qword ptr [7FFE00EEB258]; System.Buffers.Text.Utf8Parser.TryParseInt32D(System.ReadOnlySpan`1<Byte>, Int32 ByRef, Int32 ByRef)
M01_L01:
movzx eax,r9w
or eax,20
cmp eax,67
jg short M01_L02
cmp eax,64
je short M01_L00
cmp eax,67
jne short M01_L04
jmp short M01_L00
M01_L02:
cmp eax,6E
je short M01_L03
cmp eax,72
je short M01_L00
cmp eax,78
jne short M01_L04
add rsp,28
jmp qword ptr [7FFE00EEB438]
M01_L03:
add rsp,28
jmp qword ptr [7FFE00EEB2B8]
M01_L04:
call qword ptr [7FFE00D016F0]
int 3
; Total bytes of code 88Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Reactions are currently unavailable
_1.png)

_1.png)
_1.png)


Activity
dakersnar commentedon Dec 6, 2022
Most of this looks like noise, but CreateAddAndClear could be a regression caused by dotnet/runtime#79060. Thoughts @EgorBo?