Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Perf] Windows/x86: 28 Regressions on 12/14/2022 8:02:51 PM #10873

Closed
performanceautofiler bot opened this issue Dec 20, 2022 · 2 comments
Closed

[Perf] Windows/x86: 28 Regressions on 12/14/2022 8:02:51 PM #10873

performanceautofiler bot opened this issue Dec 20, 2022 · 2 comments

Comments

@performanceautofiler
Copy link

performanceautofiler bot commented Dec 20, 2022

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Drawing.Tests.Perf_Color

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetSaturation - Duration of single invocation 1.02 μs 1.10 μs 1.08 0.02 False Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Drawing.Tests.Perf_Color*'

Payloads

Baseline
Compare

Histogram

System.Drawing.Tests.Perf_Color.GetSaturation


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.1021855340396176 > 1.0662470187714932.
IsChangePoint: Marked as a change because one of 10/2/2022 4:08:26 PM, 11/18/2022 7:31:41 AM, 11/29/2022 11:48:02 PM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -20.511897369259998 (T) = (0 -1097.1643060285728) / Math.Sqrt((662.6240446144117 / (32)) + (16.31214012801645 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.09464056549081591 = (1002.3055426752117 - 1097.1643060285728) / 1002.3055426752117 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.Drawing.Tests.Perf_Color.GetSaturation()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,8
       vzeroupper
       vxorps    xmm0,xmm0,xmm0
       vmovss    dword ptr [ebp-10],xmm0
       mov       esi,ds:[6EA4588]
       xor       edi,edi
       mov       ebx,[esi+4]
       test      ebx,ebx
       jle       short M00_L03
M00_L00:
       mov       ecx,edi
       shl       ecx,4
       lea       ecx,[esi+ecx+8]
       call      dword ptr ds:[0AD419C0]; System.Drawing.Color.GetSaturation()
       fstp      dword ptr [ebp-14]
       vmovss    xmm0,dword ptr [ebp-14]
       vaddss    xmm0,xmm0,dword ptr [ebp-10]
       inc       edi
       cmp       ebx,edi
       jg        short M00_L02
M00_L01:
       vmovss    dword ptr [ebp-10],xmm0
       fld       dword ptr [ebp-10]
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
M00_L02:
       vmovss    dword ptr [ebp-10],xmm0
       jmp       short M00_L00
M00_L03:
       vmovss    xmm0,dword ptr [ebp-10]
       jmp       short M00_L01
; Total bytes of code 99
; System.Drawing.Color.GetSaturation()
       push      ebp
       mov       ebp,esp
       push      esi
       push      eax
       vzeroupper
       movsx     eax,word ptr [ecx+0E]
       test      al,2
       je        short M01_L00
       mov       esi,[ecx]
       jmp       short M01_L02
M01_L00:
       test      al,1
       je        short M01_L01
       movsx     ecx,word ptr [ecx+0C]
       call      dword ptr ds:[0B3152D0]; System.Drawing.KnownColorTable.KnownColorToArgb(System.Drawing.KnownColor)
       mov       esi,eax
       jmp       short M01_L02
M01_L01:
       xor       esi,esi
M01_L02:
       mov       eax,esi
       and       eax,0FF0000
       sar       eax,10
       mov       edx,esi
       and       edx,0FF00
       sar       edx,8
       and       esi,0FF
       cmp       eax,edx
       jne       short M01_L03
       cmp       edx,esi
       jne       short M01_L03
       vxorps    xmm0,xmm0,xmm0
       vmovss    dword ptr [ebp-8],xmm0
       fld       dword ptr [ebp-8]
       pop       ecx
       pop       esi
       pop       ebp
       ret
M01_L03:
       cmp       eax,edx
       jle       short M01_L04
       jmp       short M01_L05
M01_L04:
       xchg      eax,edx
M01_L05:
       cmp       esi,eax
       jle       short M01_L06
       mov       eax,esi
       jmp       short M01_L07
M01_L06:
       cmp       esi,edx
       jge       short M01_L07
       mov       edx,esi
M01_L07:
       lea       ecx,[eax+edx]
       cmp       ecx,0FF
       jle       short M01_L08
       mov       ecx,eax
       neg       ecx
       add       ecx,1FE
       sub       ecx,edx
M01_L08:
       sub       eax,edx
       vxorps    xmm0,xmm0,xmm0
       vcvtsi2ss xmm0,xmm0,eax
       vxorps    xmm1,xmm1,xmm1
       vcvtsi2ss xmm1,xmm1,ecx
       vdivss    xmm0,xmm0,xmm1
       vmovss    dword ptr [ebp-8],xmm0
       fld       dword ptr [ebp-8]
       pop       ecx
       pop       esi
       pop       ebp
       ret
; Total bytes of code 170

Compare Jit Disasm

; System.Drawing.Tests.Perf_Color.GetSaturation()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,8
       vzeroupper
       vxorps    xmm0,xmm0,xmm0
       vmovss    dword ptr [ebp-10],xmm0
       mov       esi,ds:[76D4580]
       xor       edi,edi
       mov       ebx,[esi+4]
       test      ebx,ebx
       jle       short M00_L03
M00_L00:
       mov       ecx,edi
       shl       ecx,4
       lea       ecx,[esi+ecx+8]
       call      dword ptr ds:[0B4F19C0]; System.Drawing.Color.GetSaturation()
       fstp      dword ptr [ebp-14]
       vmovss    xmm0,dword ptr [ebp-14]
       vaddss    xmm0,xmm0,dword ptr [ebp-10]
       inc       edi
       cmp       ebx,edi
       jg        short M00_L02
M00_L01:
       vmovss    dword ptr [ebp-10],xmm0
       fld       dword ptr [ebp-10]
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
M00_L02:
       vmovss    dword ptr [ebp-10],xmm0
       jmp       short M00_L00
M00_L03:
       vmovss    xmm0,dword ptr [ebp-10]
       jmp       short M00_L01
; Total bytes of code 99
; System.Drawing.Color.GetSaturation()
       push      ebp
       mov       ebp,esp
       push      esi
       push      eax
       vzeroupper
       movsx     eax,word ptr [ecx+0E]
       test      al,2
       je        short M01_L00
       mov       esi,[ecx]
       jmp       short M01_L02
M01_L00:
       test      al,1
       je        short M01_L01
       movsx     ecx,word ptr [ecx+0C]
       call      dword ptr ds:[0BAC33F0]; System.Drawing.KnownColorTable.KnownColorToArgb(System.Drawing.KnownColor)
       mov       esi,eax
       jmp       short M01_L02
M01_L01:
       xor       esi,esi
M01_L02:
       mov       eax,esi
       and       eax,0FF0000
       sar       eax,10
       mov       edx,esi
       and       edx,0FF00
       sar       edx,8
       and       esi,0FF
       cmp       eax,edx
       jne       short M01_L03
       cmp       edx,esi
       jne       short M01_L03
       vxorps    xmm0,xmm0,xmm0
       vmovss    dword ptr [ebp-8],xmm0
       fld       dword ptr [ebp-8]
       pop       ecx
       pop       esi
       pop       ebp
       ret
M01_L03:
       cmp       eax,edx
       jle       short M01_L04
       jmp       short M01_L05
M01_L04:
       xchg      eax,edx
M01_L05:
       cmp       esi,eax
       jle       short M01_L06
       mov       eax,esi
       jmp       short M01_L07
M01_L06:
       cmp       esi,edx
       jge       short M01_L07
       mov       edx,esi
M01_L07:
       lea       ecx,[eax+edx]
       cmp       ecx,0FF
       jle       short M01_L08
       mov       ecx,eax
       neg       ecx
       add       ecx,1FE
       sub       ecx,edx
M01_L08:
       sub       eax,edx
       vxorps    xmm0,xmm0,xmm0
       vcvtsi2ss xmm0,xmm0,eax
       vxorps    xmm1,xmm1,xmm1
       vcvtsi2ss xmm1,xmm1,ecx
       vdivss    xmm0,xmm0,xmm1
       vmovss    dword ptr [ebp-8],xmm0
       fld       dword ptr [ebp-8]
       pop       ecx
       pop       esi
       pop       ebp
       ret
; Total bytes of code 170

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

### Run Information
Architecture x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Numerics.Tests.Perf_VectorOf<Byte>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetHashCodeBenchmark - Duration of single invocation 108.37 ns 122.91 ns 1.13 0.00 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_VectorOf&lt;Byte&gt;*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_VectorOf<Byte>.GetHashCodeBenchmark


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 122.9101502883673 > 113.84462474943126.
IsChangePoint: Marked as a change because one of 10/2/2022 4:08:26 PM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -25.459548355229703 (T) = (0 -123.03444547047216) / Math.Sqrt((7.335790364174276 / (32)) + (0.07415295625095104 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.11079310950332365 = (110.7627013688313 - 123.03444547047216) / 110.7627013688313 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Memory.Span<Char>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
BinarySearch - Duration of single invocation 13.12 ns 16.03 ns 1.22 0.07 False
BinarySearch - Duration of single invocation 7.67 ns 9.16 ns 1.19 0.05 False

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Memory.Span&lt;Char&gt;*'

Payloads

Baseline
Compare

Histogram

System.Memory.Span<Char>.BinarySearch(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 16.02934625949246 > 13.67330860587453.
IsChangePoint: Marked as a change because one of 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -31.158374586412485 (T) = (0 -15.918278071654113) / Math.Sqrt((0.23648379871901445 / (32)) + (0.007749379606335283 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.20759214733017925 = (13.181833044250283 - 15.918278071654113) / 13.181833044250283 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.

```#### System.Memory.Span&lt;Char&gt;.BinarySearch(Size: 33)

```log

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 9.158109911489776 > 8.046969203158376.
IsChangePoint: Marked as a change because one of 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -41.89895667021475 (T) = (0 -9.160822317070162) / Math.Sqrt((0.03681027262950644 / (32)) + (0.00023285353614624902 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.18452052742191952 = (7.7337809729717995 - 9.160822317070162) / 7.7337809729717995 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
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
BinarySearch - Duration of single invocation 8.22 ns 10.43 ns 1.27 0.03 False
BinarySearch - Duration of single invocation 12.95 ns 18.42 ns 1.42 0.04 False

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Memory.Span&lt;Byte&gt;*'

Payloads

Baseline
Compare

Histogram

System.Memory.Span<Byte>.BinarySearch(Size: 33)


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 10.425218052870086 > 8.636336154488218.
IsChangePoint: Marked as a change because one of 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -50.96535194710989 (T) = (0 -10.559433941580682) / Math.Sqrt((0.03766622434752506 / (32)) + (0.024943628150511293 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.2940386931009947 = (8.160060435500872 - 10.559433941580682) / 8.160060435500872 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.

```#### System.Memory.Span&lt;Byte&gt;.BinarySearch(Size: 512)

```log

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 18.416840918792577 > 13.63465753414234.
IsChangePoint: Marked as a change because one of 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -39.70459434304202 (T) = (0 -18.566130052299375) / Math.Sqrt((0.2026351936741814 / (32)) + (0.3053855007240162 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.41887970730142626 = (13.085062783518401 - 18.566130052299375) / 13.085062783518401 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in IfStatements.IfStatements

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
OrArray - Duration of single invocation 73.34 μs 78.21 μs 1.07 0.03 False Trace Trace
AndArray - Duration of single invocation 73.78 μs 79.62 μs 1.08 0.02 False Trace Trace

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'IfStatements.IfStatements*'

Payloads

Baseline
Compare

Histogram

IfStatements.IfStatements.OrArray


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 78.20585636515912 > 76.9055413361226.
IsChangePoint: Marked as a change because one of 10/2/2022 11:57:04 PM, 10/5/2022 12:22:07 PM, 10/25/2022 12:27:43 PM, 11/7/2022 4:10:19 PM, 11/18/2022 7:31:41 AM, 12/6/2022 2:12:43 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -44.200939677440395 (T) = (0 -78338.6860751458) / Math.Sqrt((248945.9606688011 / (32)) + (74234.83455037304 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.06251107619886 = (73729.75946321702 - 78338.6860751458) / 73729.75946321702 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
; IfStatements.IfStatements.OrArray()
       push      ebp
       mov       ebp,esp
       push      esi
       xor       ecx,ecx
M00_L00:
       lea       esi,[ecx+1]
       mov       edx,esi
       call      dword ptr ds:[0B19F750]; IfStatements.IfStatements.OrArrayInner(Int32, Int32)
       mov       ecx,esi
       cmp       ecx,2710
       jl        short M00_L00
       pop       esi
       pop       ebp
       ret
; Total bytes of code 30
; IfStatements.IfStatements.OrArrayInner(Int32, Int32)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       eax,ds:[78E4118]
       mov       esi,eax
       mov       edi,[esi+4]
       cmp       ecx,edi
       jae       short M01_L02
       test      byte ptr [esi+ecx*4+8],1
       je        short M01_L00
       cmp       edx,edi
       jae       short M01_L02
       test      byte ptr [eax+edx*4+8],1
       jne       short M01_L01
M01_L00:
       mov       ecx,5
M01_L01:
       push      0
       push      0
       call      dword ptr ds:[0B19F570]; IfStatements.IfStatements.Consume(Int32, Int32, Int32, Int32)
       pop       esi
       pop       edi
       pop       ebp
       ret
M01_L02:
       call      CORINFO_HELP_RNGCHKFAIL
       int       3
; Total bytes of code 62

Compare Jit Disasm

; IfStatements.IfStatements.OrArray()
       push      ebp
       mov       ebp,esp
       push      esi
       xor       ecx,ecx
M00_L00:
       lea       esi,[ecx+1]
       mov       edx,esi
       call      dword ptr ds:[0B27F750]; IfStatements.IfStatements.OrArrayInner(Int32, Int32)
       mov       ecx,esi
       cmp       ecx,2710
       jl        short M00_L00
       pop       esi
       pop       ebp
       ret
; Total bytes of code 30
; IfStatements.IfStatements.OrArrayInner(Int32, Int32)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       eax,ds:[7864110]
       mov       esi,eax
       mov       edi,[esi+4]
       cmp       ecx,edi
       jae       short M01_L02
       test      byte ptr [esi+ecx*4+8],1
       je        short M01_L00
       cmp       edx,edi
       jae       short M01_L02
       test      byte ptr [eax+edx*4+8],1
       jne       short M01_L01
M01_L00:
       mov       ecx,5
M01_L01:
       push      0
       push      0
       call      dword ptr ds:[0B27F570]; IfStatements.IfStatements.Consume(Int32, Int32, Int32, Int32)
       pop       esi
       pop       edi
       pop       ebp
       ret
M01_L02:
       call      CORINFO_HELP_RNGCHKFAIL
       int       3
; Total bytes of code 62

IfStatements.IfStatements.AndArray


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 79.61647125196232 > 77.10032478882098.
IsChangePoint: Marked as a change because one of 10/5/2022 3:28:28 PM, 10/25/2022 12:27:43 PM, 11/18/2022 7:31:41 AM, 12/6/2022 2:12:43 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -52.55452029555507 (T) = (0 -79110.76871678732) / Math.Sqrt((220795.54268215413 / (32)) + (88656.84283523736 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.07339416808369019 = (73701.50786082828 - 79110.76871678732) / 73701.50786082828 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
; IfStatements.IfStatements.AndArray()
       push      ebp
       mov       ebp,esp
       push      esi
       xor       ecx,ecx
M00_L00:
       lea       esi,[ecx+1]
       mov       edx,esi
       call      dword ptr ds:[0A31F720]; IfStatements.IfStatements.AndArrayInner(Int32, Int32)
       mov       ecx,esi
       cmp       ecx,2710
       jl        short M00_L00
       pop       esi
       pop       ebp
       ret
; Total bytes of code 30
; IfStatements.IfStatements.AndArrayInner(Int32, Int32)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       eax,ds:[6934118]
       mov       esi,eax
       mov       edi,[esi+4]
       cmp       ecx,edi
       jae       short M01_L01
       test      byte ptr [esi+ecx*4+8],1
       jne       short M01_L00
       cmp       edx,edi
       jae       short M01_L01
       test      byte ptr [eax+edx*4+8],1
       jne       short M01_L00
       mov       ecx,5
M01_L00:
       push      0
       push      0
       call      dword ptr ds:[0A31F570]; IfStatements.IfStatements.Consume(Int32, Int32, Int32, Int32)
       pop       esi
       pop       edi
       pop       ebp
       ret
M01_L01:
       call      CORINFO_HELP_RNGCHKFAIL
       int       3
; Total bytes of code 62

Compare Jit Disasm

; IfStatements.IfStatements.AndArray()
       push      ebp
       mov       ebp,esp
       push      esi
       xor       ecx,ecx
M00_L00:
       lea       esi,[ecx+1]
       mov       edx,esi
       call      dword ptr ds:[0AA4F720]; IfStatements.IfStatements.AndArrayInner(Int32, Int32)
       mov       ecx,esi
       cmp       ecx,2710
       jl        short M00_L00
       pop       esi
       pop       ebp
       ret
; Total bytes of code 30
; IfStatements.IfStatements.AndArrayInner(Int32, Int32)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       eax,ds:[6FC4110]
       mov       esi,eax
       mov       edi,[esi+4]
       cmp       ecx,edi
       jae       short M01_L01
       test      byte ptr [esi+ecx*4+8],1
       jne       short M01_L00
       cmp       edx,edi
       jae       short M01_L01
       test      byte ptr [eax+edx*4+8],1
       jne       short M01_L00
       mov       ecx,5
M01_L00:
       push      0
       push      0
       call      dword ptr ds:[0AA4F570]; IfStatements.IfStatements.Consume(Int32, Int32, Int32, Int32)
       pop       esi
       pop       edi
       pop       ebp
       ret
M01_L01:
       call      CORINFO_HELP_RNGCHKFAIL
       int       3
; Total bytes of code 62

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Memory.Span<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
BinarySearch - Duration of single invocation 16.75 ns 23.87 ns 1.43 0.05 False
Fill - Duration of single invocation 3.03 ns 10.22 ns 3.37 0.20 False
BinarySearch - Duration of single invocation 10.17 ns 12.49 ns 1.23 0.01 False

graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Memory.Span&lt;Int32&gt;*'

Payloads

Baseline
Compare

Histogram

System.Memory.Span<Int32>.BinarySearch(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 23.868290627866596 > 17.52127058234363.
IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -21.162045030255005 (T) = (0 -21.915684299842848) / Math.Sqrt((0.028982425775954695 / (32)) + (1.400962815531185 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.307361326144545 = (16.76329554926715 - 21.915684299842848) / 16.76329554926715 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.

```#### System.Memory.Span&lt;Int32&gt;.Fill(Size: 33)

```log

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 10.224286899726838 > 3.1745990293708957.
IsChangePoint: Marked as a change because one of 12/12/2022 5:25:39 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -12.21277808322521 (T) = (0 -9.843189851844748) / Math.Sqrt((0.00014645723652511415 / (19)) + (11.52260833601177 / (37))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (37) - 2, .025) and -2.2509998516486798 = (3.027742325750329 - 9.843189851844748) / 3.027742325750329 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.

```#### System.Memory.Span&lt;Int32&gt;.BinarySearch(Size: 33)

```log

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 12.491970145246853 > 10.69651400783802.
IsChangePoint: Marked as a change because one of 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -432.87706478043316 (T) = (0 -12.50454837631566) / Math.Sqrt((0.0003199844063398394 / (32)) + (0.0004453131126304447 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.22696823386942946 = (10.1914198193059 - 12.50454837631566) / 10.1914198193059 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Collections.ContainsTrue<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Span - Duration of single invocation 16.31 μs 17.66 μs 1.08 0.07 False
ImmutableList - Duration of single invocation 770.14 μs 819.23 μs 1.06 0.01 False

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsTrue&lt;Int32&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.ContainsTrue<Int32>.Span(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 17.658604564160118 > 17.157616847684704.
IsChangePoint: Marked as a change because one of 11/11/2022 5:53:56 PM, 11/18/2022 7:31:41 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -17.146489810361864 (T) = (0 -17548.080134621778) / Math.Sqrt((161766.86045506486 / (32)) + (4768.758590598182 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.07622361816740535 = (16305.236047971764 - 17548.080134621778) / 16305.236047971764 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.

```#### System.Collections.ContainsTrue&lt;Int32&gt;.ImmutableList(Size: 512)

```log

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 819.2335491071428 > 808.5962418154763.
IsChangePoint: Marked as a change because one of 10/2/2022 4:08:26 PM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -106.90561570216748 (T) = (0 -819263.2687663669) / Math.Sqrt((2211062.70042671 / (32)) + (3159687.173650233 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.062096645076524945 = (771364.1433330564 - 819263.2687663669) / 771364.1433330564 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Collections.ContainsTrue<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Span - Duration of single invocation 480.51 μs 614.57 μs 1.28 0.01 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsTrue&lt;String&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.ContainsTrue<String>.Span(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 614.5686498397437 > 502.2384435096154.
IsChangePoint: Marked as a change because one of 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -67.34256436660961 (T) = (0 -615485.0581149621) / Math.Sqrt((137725466.6505959 / (32)) + (1725111.8303442567 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.29680886036866666 = (474615.0931911333 - 615485.0581149621) / 474615.0931911333 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
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
ImmutableList - Duration of single invocation 1.52 ms 1.63 ms 1.07 0.03 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsFalse&lt;Int32&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.ContainsFalse<Int32>.ImmutableList(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.6259482916666668 > 1.5959670880681818.
IsChangePoint: Marked as a change because one of 10/2/2022 4:08:26 PM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -70.20036299160816 (T) = (0 -1628394.7423592033) / Math.Sqrt((51736618.001660146 / (32)) + (13870252.52047377 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.0682226666633443 = (1524396.3577795902 - 1628394.7423592033) / 1524396.3577795902 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

@performanceautofiler
Copy link
Author

performanceautofiler bot commented Dec 20, 2022

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
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
Stack - Duration of single invocation 3.79 μs 4.15 μs 1.10 0.05 False
IEnumerable - Duration of single invocation 2.43 μs 2.78 μs 1.14 0.06 False
LinkedList - Duration of single invocation 3.09 μs 3.50 μs 1.13 0.06 False

graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.IterateForEach&lt;String&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.IterateForEach<String>.Stack(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.152943476912169 > 3.9712369693384484.
IsChangePoint: Marked as a change because one of 10/25/2022 12:27:43 PM, 11/10/2022 9:13:35 AM, 11/18/2022 7:31:41 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -29.867542576248876 (T) = (0 -4151.275373548354) / Math.Sqrt((7033.846636288558 / (32)) + (416.7918997559116 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.12461018255854574 = (3691.301606485538 - 4151.275373548354) / 3691.301606485538 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.

```#### System.Collections.IterateForEach&lt;String&gt;.IEnumerable(Size: 512)

```log

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 2.7763347643954828 > 2.549383265418762.
IsChangePoint: Marked as a change because one of 10/2/2022 11:57:04 PM, 10/5/2022 3:28:28 PM, 10/10/2022 3:36:43 PM, 10/25/2022 12:27:43 PM, 11/2/2022 4:14:20 AM, 11/18/2022 7:31:41 AM, 12/6/2022 2:12:43 AM, 12/14/2022 12:26:48 AM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -22.797108562934497 (T) = (0 -2762.3421159685545) / Math.Sqrt((147.76002028928147 / (28)) + (5698.734440778695 / (28))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (28) - 2, .025) and -0.1354004543846467 = (2432.9232081078053 - 2762.3421159685545) / 2432.9232081078053 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.

```#### System.Collections.IterateForEach&lt;String&gt;.LinkedList(Size: 512)

```log

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 3.495113093906169 > 3.2411429198980537.
IsChangePoint: Marked as a change because one of 10/2/2022 11:57:04 PM, 10/11/2022 5:13:36 PM, 10/18/2022 1:35:00 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -28.034416795164727 (T) = (0 -3501.901821081678) / Math.Sqrt((1032.9131112732632 / (32)) + (3953.7539613083713 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.12659240277970976 = (3108.4017719640424 - 3501.901821081678) / 3108.4017719640424 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Collections.CreateAddAndRemove<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.34 μs 3.72 μs 1.11 0.01 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.CreateAddAndRemove&lt;Int32&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.CreateAddAndRemove<Int32>.Queue(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 3.716951091269841 > 3.4990415799722583.
IsChangePoint: Marked as a change because one of 10/25/2022 2:34:53 PM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -155.9560645315417 (T) = (0 -3723.2685407496506) / Math.Sqrt((104.77654987144054 / (32)) + (74.23876427089458 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.11818967341799244 = (3329.7289621434816 - 3723.2685407496506) / 3329.7289621434816 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Collections.Tests.Perf_PriorityQueue<String, String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Enumerate - Duration of single invocation 582.71 ns 616.11 ns 1.06 0.08 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.Tests.Perf_PriorityQueue&lt;String, String&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.Tests.Perf_PriorityQueue<String, String>.Enumerate(Size: 100)


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 616.1096416447198 > 610.4066356293299.
IsChangePoint: Marked as a change because one of 11/18/2022 7:31:41 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -17.763814808471803 (T) = (0 -616.7285327202886) / Math.Sqrt((102.38572498088726 / (32)) + (1.2410750579580785 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.054781099357636955 = (584.6981265552417 - 616.7285327202886) / 584.6981265552417 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Collections.CreateAddAndClear<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ICollection - Duration of single invocation 4.25 μs 4.60 μs 1.08 0.02 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.CreateAddAndClear&lt;String&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.CreateAddAndClear<String>.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 4.595935546344116 > 4.437638426638163.
IsChangePoint: Marked as a change because one of 10/4/2022 3:13:24 PM, 11/22/2022 2:20:42 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -35.913101378375046 (T) = (0 -4601.459754162245) / Math.Sqrt((3685.6183453340036 / (32)) + (126.78530847308475 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.09368448878446217 = (4207.300918454443 - 4601.459754162245) / 4207.300918454443 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Numerics.Tests.Perf_VectorOf<Int16>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetHashCodeBenchmark - Duration of single invocation 49.07 ns 58.04 ns 1.18 0.03 False
DivisionOperatorBenchmark - Duration of single invocation 39.49 ns 50.69 ns 1.28 0.02 False
DivideBenchmark - Duration of single invocation 39.88 ns 50.70 ns 1.27 0.03 False

graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_VectorOf&lt;Int16&gt;*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_VectorOf<Int16>.GetHashCodeBenchmark


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 58.04101958355569 > 51.51488708835061.
IsChangePoint: Marked as a change because one of 10/19/2022 7:27:15 PM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -16.397864446715534 (T) = (0 -58.51026895272878) / Math.Sqrt((6.094004060415642 / (32)) + (0.4179153232298904 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.14648741041555996 = (51.03437545077005 - 58.51026895272878) / 51.03437545077005 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.

```#### System.Numerics.Tests.Perf_VectorOf&lt;Int16&gt;.DivisionOperatorBenchmark

```log

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 50.68942948862229 > 41.65090065707739.
IsChangePoint: Marked as a change because one of 12/1/2022 8:17:56 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -33.86296207819361 (T) = (0 -50.74280567389562) / Math.Sqrt((3.0165422260550856 / (32)) + (0.012136564480178075 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.25856339474377826 = (40.3180371253575 - 50.74280567389562) / 40.3180371253575 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.

```#### System.Numerics.Tests.Perf_VectorOf&lt;Int16&gt;.DivideBenchmark

```log

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 50.69754662945182 > 41.7376720995353.
IsChangePoint: Marked as a change because one of 12/1/2022 8:17:56 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -35.25870493671004 (T) = (0 -49.86756000242568) / Math.Sqrt((0.4315902015734548 / (32)) + (1.571969216577669 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.2479899932940594 = (39.95830116457958 - 49.86756000242568) / 39.95830116457958 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Collections.ContainsFalse<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Span - Duration of single invocation 915.93 μs 1.22 ms 1.34 0.00 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsFalse&lt;String&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.ContainsFalse<String>.Span(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.2231353708791208 > 961.1753799412393.
IsChangePoint: Marked as a change because one of 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -164.8652965256935 (T) = (0 -1222272.0679754273) / Math.Sqrt((107674092.63124971 / (32)) + (3516435.6156493695 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.3382467172604504 = (913338.3644516334 - 1222272.0679754273) / 913338.3644516334 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Numerics.Tests.Perf_VectorOf<Double>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetHashCodeBenchmark - Duration of single invocation 19.32 ns 20.86 ns 1.08 0.03 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_VectorOf&lt;Double&gt;*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_VectorOf<Double>.GetHashCodeBenchmark


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 20.864747124623886 > 20.29070677672867.
IsChangePoint: Marked as a change because one of 10/2/2022 4:08:26 PM, 10/11/2022 1:45:10 PM, 11/18/2022 7:31:41 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -31.018984017432242 (T) = (0 -20.9230557182922) / Math.Sqrt((0.04883515126559159 / (32)) + (0.013201202367427943 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.07244469307428186 = (19.509682740201676 - 20.9230557182922) / 19.509682740201676 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Numerics.Tests.Perf_VectorOf<UInt16>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetHashCodeBenchmark - Duration of single invocation 49.13 ns 58.12 ns 1.18 0.03 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_VectorOf&lt;UInt16&gt;*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_VectorOf<UInt16>.GetHashCodeBenchmark


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 58.11674337588035 > 51.375206006871785.
IsChangePoint: Marked as a change because one of 10/19/2022 7:27:15 PM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -17.03598020864574 (T) = (0 -58.6463202501949) / Math.Sqrt((6.120521873765625 / (32)) + (0.18956778648085643 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.14894742084767046 = (51.043519647684846 - 58.6463202501949) / 51.043519647684846 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 x86
OS Windows 10.0.18362
Baseline 8e15d9f523209caf08db57897777b7beb0516c99
Compare a78811401f3b2fa8be2d8e40b9bb1e706a9e8501
Diff Diff

Regressions in System.Linq.Tests.Perf_Enumerable

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
TakeLastHalf - Duration of single invocation 713.56 ns 774.72 ns 1.09 0.04 False Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Linq.Tests.Perf_Enumerable*'

Payloads

Baseline
Compare

Histogram

System.Linq.Tests.Perf_Enumerable.TakeLastHalf(input: List)


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 774.7224225394141 > 749.6352785250228.
IsChangePoint: Marked as a change because one of 10/25/2022 12:27:43 PM, 11/18/2022 7:31:41 AM, 12/14/2022 5:20:21 PM, 12/20/2022 4:30:45 AM falls between 12/11/2022 2:11:02 PM and 12/20/2022 4:30:45 AM.
IsRegressionStdDev: Marked as regression because -61.509558641286816 (T) = (0 -772.5472410144226) / Math.Sqrt((5.248027306904295 / (32)) + (16.727354700749174 / (24))) is less than -2.0048792881871513 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (24) - 2, .025) and -0.0797708408361436 = (715.4733317452657 - 772.5472410144226) / 715.4733317452657 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.Linq.Tests.Perf_Enumerable.TakeLastHalf(System.Linq.Tests.LinqTestData)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       mov       edi,[edx+4]
       test      edi,edi
       je        short M00_L00
       mov       ecx,offset MT_System.Linq.Enumerable+<TakeRangeFromEndIterator>d__278`1[[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       ebx,eax
       mov       dword ptr [ebx+14],0FFFFFFFE
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [ebx+1C],eax
       lea       edx,[ebx+8]
       call      CORINFO_HELP_ASSIGN_REF_EDI
       mov       byte ptr [ebx+35],1
       mov       dword ptr [ebx+24],32
       mov       byte ptr [ebx+37],1
       xor       edx,edx
       mov       [ebx+2C],edx
       mov       edx,[esi+4]
       mov       ecx,ebx
       call      dword ptr ds:[0B835318]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, BenchmarkDotNet.Engines.Consumer)
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
M00_L00:
       mov       ecx,10
       call      dword ptr ds:[0AE23E10]
       int       3
; Total bytes of code 98
; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, BenchmarkDotNet.Engines.Consumer)
       push      ebp
       mov       ebp,esp
       push      esi
       sub       esp,18
       xor       eax,eax
       mov       [ebp-18],eax
       mov       [ebp-14],eax
       mov       [ebp-10],eax
       mov       [ebp-0C],eax
       mov       esi,edx
       call      dword ptr ds:[51002B0]
       mov       ecx,eax
       mov       [ebp-1C],ecx
       call      dword ptr ds:[51002B4]
       test      eax,eax
       je        short M01_L01
M01_L00:
       mov       ecx,[ebp-1C]
       call      dword ptr ds:[51002B8]
       mov       [esi+24],eax
       mov       ecx,[ebp-1C]
       call      dword ptr ds:[51002B4]
       test      eax,eax
       jne       short M01_L00
M01_L01:
       mov       ecx,[ebp-1C]
       call      dword ptr ds:[51002BC]
       jmp       short M01_L03
       cmp       dword ptr [ebp-1C],0
       je        short M01_L02
       mov       ecx,[ebp-1C]
       call      dword ptr ds:[51002BC]
M01_L02:
       pop       eax
       jmp       eax
M01_L03:
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
; Total bytes of code 104

Compare Jit Disasm

; System.Linq.Tests.Perf_Enumerable.TakeLastHalf(System.Linq.Tests.LinqTestData)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       mov       edi,[edx+4]
       test      edi,edi
       je        short M00_L00
       mov       ecx,offset MT_System.Linq.Enumerable+<TakeRangeFromEndIterator>d__278`1[[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       ebx,eax
       mov       dword ptr [ebx+14],0FFFFFFFE
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [ebx+1C],eax
       lea       edx,[ebx+8]
       call      CORINFO_HELP_ASSIGN_REF_EDI
       mov       byte ptr [ebx+35],1
       mov       dword ptr [ebx+24],32
       mov       byte ptr [ebx+37],1
       xor       edx,edx
       mov       [ebx+2C],edx
       mov       edx,[esi+4]
       mov       ecx,ebx
       call      dword ptr ds:[0AD13438]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, BenchmarkDotNet.Engines.Consumer)
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
M00_L00:
       mov       ecx,10
       call      dword ptr ds:[0A303E10]
       int       3
; Total bytes of code 98
; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, BenchmarkDotNet.Engines.Consumer)
       push      ebp
       mov       ebp,esp
       push      esi
       sub       esp,18
       xor       eax,eax
       mov       [ebp-18],eax
       mov       [ebp-14],eax
       mov       [ebp-10],eax
       mov       [ebp-0C],eax
       mov       esi,edx
       call      dword ptr ds:[27102AC]
       mov       ecx,eax
       mov       [ebp-1C],ecx
       call      dword ptr ds:[27102B0]
       test      eax,eax
       je        short M01_L01
M01_L00:
       mov       ecx,[ebp-1C]
       call      dword ptr ds:[27102B4]
       mov       [esi+24],eax
       mov       ecx,[ebp-1C]
       call      dword ptr ds:[27102B0]
       test      eax,eax
       jne       short M01_L00
M01_L01:
       mov       ecx,[ebp-1C]
       call      dword ptr ds:[27102B8]
       jmp       short M01_L03
       cmp       dword ptr [ebp-1C],0
       je        short M01_L02
       mov       ecx,[ebp-1C]
       call      dword ptr ds:[27102B8]
M01_L02:
       pop       eax
       jmp       eax
M01_L03:
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
; Total bytes of code 104

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

@kunalspathak
Copy link
Member

dotnet/runtime#79973

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant