Closed
Description
Run Information
Architecture | x64 |
---|---|
OS | Windows 10.0.18362 |
Baseline | ac2ffdf4ff87e7e3a5506a8ef69ce633f6fcda85 |
Compare | a6040aed0764e925b1b15449a1028bc52495c9a4 |
Diff | Diff |
Regressions in Microsoft.Extensions.Configuration.ConfigurationBinderBenchmarks
Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|---|---|
Get - Duration of single invocation | 7.59 ms | 8.05 ms | 1.06 | 0.19 | False | 80039583.33333333 | 84250000 | 1.052604180223327 | Trace | Trace |
Repro
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Microsoft.Extensions.Configuration.ConfigurationBinderBenchmarks*'
Payloads
Histogram
Microsoft.Extensions.Configuration.ConfigurationBinderBenchmarks.Get(ConfigurationProvidersCount: 16, KeysCountPerProvider: 40)
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 8.049544444444445 > 7.989274774816177.
IsChangePoint: Marked as a change because one of 12/14/2022 5:20:21 PM, 1/3/2023 3:01:43 PM, 1/10/2023 1:28:02 AM falls between 1/1/2023 3:57:25 AM and 1/10/2023 1:28:02 AM.
IsRegressionStdDev: Marked as regression because -6.923924658323625 (T) = (0 -8210041.4187689535) / Math.Sqrt((30283988536.193783 / (16)) + (127535177539.65091 / (31))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (16) + (31) - 2, .025) and -0.06993343672157498 = (7673413.258235637 - 8210041.4187689535) / 7673413.258235637 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
; Microsoft.Extensions.Configuration.ConfigurationBinderBenchmarks.Get()
mov rdx,[rcx+8]
mov rcx,offset MD_Microsoft.Extensions.Configuration.ConfigurationBinder.Get[[Microsoft.Extensions.Configuration.ConfigurationBinderBenchmarks+MySettings, MicroBenchmarks]](Microsoft.Extensions.Configuration.IConfiguration)
jmp qword ptr [7FFB92827D08]; Microsoft.Extensions.Configuration.ConfigurationBinder.Get[[System.__Canon, System.Private.CoreLib]](Microsoft.Extensions.Configuration.IConfiguration)
; Total bytes of code 20
; Microsoft.Extensions.Configuration.ConfigurationBinder.Get[[System.__Canon, System.Private.CoreLib]](Microsoft.Extensions.Configuration.IConfiguration)
push r14
push rdi
push rsi
push rbp
push rbx
sub rsp,30
mov [rsp+28],rcx
mov rsi,rcx
mov rdi,rdx
mov rbx,[rsi+10]
mov rcx,[rbx+10]
test rcx,rcx
je short M01_L00
jmp short M01_L01
M01_L00:
mov rcx,rsi
mov rdx,7FFB9280A590
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rcx,rax
M01_L01:
call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
mov rbp,[rax+8]
test rbp,rbp
jne near ptr M01_L06
mov rbp,[rbx+10]
test rbp,rbp
je short M01_L02
jmp short M01_L03
M01_L02:
mov rcx,rsi
mov rdx,7FFB9280A590
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rbp,rax
M01_L03:
mov rcx,offset MT_System.Action`1[[Microsoft.Extensions.Configuration.BinderOptions, Microsoft.Extensions.Configuration.Binder]]
call CORINFO_HELP_NEWSFAST
mov r14,rax
mov rcx,rbp
call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
mov rdx,[rax]
test rdx,rdx
je near ptr M01_L09
lea rcx,[r14+8]
call CORINFO_HELP_ASSIGN_REF
mov rcx,7FFB92826DB0
mov [r14+18],rcx
mov rcx,[rbx+10]
test rcx,rcx
je short M01_L04
jmp short M01_L05
M01_L04:
mov rcx,rsi
mov rdx,7FFB9280A590
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rcx,rax
M01_L05:
call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
lea rcx,[rax+8]
mov rdx,r14
call CORINFO_HELP_ASSIGN_REF
mov rbp,r14
M01_L06:
mov rcx,[rbx+18]
test rcx,rcx
je short M01_L07
jmp short M01_L08
M01_L07:
mov rcx,rsi
mov rdx,7FFB9280A630
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rcx,rax
M01_L08:
mov rdx,rdi
mov r8,rbp
add rsp,30
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
jmp qword ptr [7FFB92827E88]; Microsoft.Extensions.Configuration.ConfigurationBinder.Get[[System.__Canon, System.Private.CoreLib]](Microsoft.Extensions.Configuration.IConfiguration, System.Action`1<Microsoft.Extensions.Configuration.BinderOptions>)
M01_L09:
call qword ptr [7FFB91CED630]
int 3
; Total bytes of code 281
Compare Jit Disasm
; Microsoft.Extensions.Configuration.ConfigurationBinderBenchmarks.Get()
mov rdx,[rcx+8]
mov rcx,offset MD_Microsoft.Extensions.Configuration.ConfigurationBinder.Get[[Microsoft.Extensions.Configuration.ConfigurationBinderBenchmarks+MySettings, MicroBenchmarks]](Microsoft.Extensions.Configuration.IConfiguration)
jmp qword ptr [7FFF51A39390]; Microsoft.Extensions.Configuration.ConfigurationBinder.Get[[System.__Canon, System.Private.CoreLib]](Microsoft.Extensions.Configuration.IConfiguration)
; Total bytes of code 20
; Microsoft.Extensions.Configuration.ConfigurationBinder.Get[[System.__Canon, System.Private.CoreLib]](Microsoft.Extensions.Configuration.IConfiguration)
push r14
push rdi
push rsi
push rbp
push rbx
sub rsp,30
mov [rsp+28],rcx
mov rsi,rcx
mov rdi,rdx
mov rbx,[rsi+10]
mov rcx,[rbx+10]
test rcx,rcx
je short M01_L00
jmp short M01_L01
M01_L00:
mov rcx,rsi
mov rdx,7FFF51A2BA68
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rcx,rax
M01_L01:
call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
mov rbp,[rax+8]
test rbp,rbp
jne near ptr M01_L06
mov rbp,[rbx+10]
test rbp,rbp
je short M01_L02
jmp short M01_L03
M01_L02:
mov rcx,rsi
mov rdx,7FFF51A2BA68
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rbp,rax
M01_L03:
mov rcx,offset MT_System.Action`1[[Microsoft.Extensions.Configuration.BinderOptions, Microsoft.Extensions.Configuration.Binder]]
call CORINFO_HELP_NEWSFAST
mov r14,rax
mov rcx,rbp
call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
mov rdx,[rax]
test rdx,rdx
je near ptr M01_L09
lea rcx,[r14+8]
call CORINFO_HELP_ASSIGN_REF
mov rcx,offset Microsoft.Extensions.Configuration.ConfigurationBinder+<>c__5`1[[System.__Canon, System.Private.CoreLib]].<Get>b__5_0(Microsoft.Extensions.Configuration.BinderOptions)
mov [r14+18],rcx
mov rcx,[rbx+10]
test rcx,rcx
je short M01_L04
jmp short M01_L05
M01_L04:
mov rcx,rsi
mov rdx,7FFF51A2BA68
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rcx,rax
M01_L05:
call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
lea rcx,[rax+8]
mov rdx,r14
call CORINFO_HELP_ASSIGN_REF
mov rbp,r14
M01_L06:
mov rcx,[rbx+18]
test rcx,rcx
je short M01_L07
jmp short M01_L08
M01_L07:
mov rcx,rsi
mov rdx,7FFF51A2BB08
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rcx,rax
M01_L08:
mov rdx,rdi
mov r8,rbp
add rsp,30
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
jmp qword ptr [7FFF51A39510]; Microsoft.Extensions.Configuration.ConfigurationBinder.Get[[System.__Canon, System.Private.CoreLib]](Microsoft.Extensions.Configuration.IConfiguration, System.Action`1<Microsoft.Extensions.Configuration.BinderOptions>)
M01_L09:
call qword ptr [7FFF50F0D630]
int 3
; Total bytes of code 281
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository