Skip to content

[Perf] Windows/x64: 2 Improvements on 11/21/2022 12:41:05 AM #9914

@performanceautofiler

Description

@performanceautofiler

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline de005e5ea950f852df5befac7c06ae2f717bfc29
Compare 9129083c2fc6ef32479168f0555875b54aee4dfb
Diff Diff

Improvements in System.Tests.Perf_Char

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Char_ToUpperInvariant - Duration of single invocation 30.32 ns 15.92 ns 0.53 0.03 False
Char_ToLowerInvariant - Duration of single invocation 30.08 ns 15.34 ns 0.51 0.03 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.Tests.Perf_Char*'
Details

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Char.Char_ToUpperInvariant(input: "Hello World!")


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 15.92332978274221 < 28.47682296133271.
IsChangePoint: Marked as a change because one of 9/23/2022 1:16:35 AM, 9/29/2022 7:42:19 AM, 10/11/2022 8:42:28 PM, 10/17/2022 3:19:47 PM, 11/2/2022 9:35:40 AM, 11/7/2022 4:10:19 PM, 11/20/2022 11:32:49 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM.
IsImprovementStdDev: Marked as improvement because 77.18983117049477 (T) = (0 -15.699632211135299) / Math.Sqrt((6.81404340917355 / (299)) + (0.021253948915863997 / (5))) is greater than 1.9678502273660254 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (5) - 2, .975) and 0.44705318033345204 = (28.392662101941177 - 15.699632211135299) / 28.392662101941177 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Compare Jit Disasm

```assembly
; System.Tests.Perf_Char.Char_ToUpperInvariant(System.String)
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,40
       xor       eax,eax
       mov       [rsp+38],rax
       mov       rsi,rdx
       xor       edi,edi
       xor       ebx,ebx
       mov       ebp,[rsi+8]
       test      ebp,ebp
       jle       short M00_L04
M00_L00:
       mov       r9d,ebx
       movzx     r9d,word ptr [rsi+r9*2+0C]
       cmp       r9d,7F
       ja        short M00_L02
       lea       edx,[r9-61]
       cmp       edx,19
       ja        short M00_L01
       and       r9d,5F
M00_L01:
       mov       r14d,r9d
       jmp       short M00_L03
M00_L02:
       mov       rdx,2835CC00718
       mov       rcx,[rdx]
       mov       [rsp+30],r9w
       xor       r9d,r9d
       mov       [rsp+38],r9d
       mov       dword ptr [rsp+20],1
       mov       dword ptr [rsp+28],1
       lea       r9,[rsp+38]
       lea       rdx,[rsp+30]
       mov       r8d,1
       call      qword ptr [7FF887717D08]
       movzx     r14d,word ptr [rsp+38]
M00_L03:
       add       edi,r14d
       inc       ebx
       cmp       ebp,ebx
       jg        short M00_L00
M00_L04:
       mov       eax,edi
       add       rsp,40
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       ret
; Total bytes of code 157

System.Tests.Perf_Char.Char_ToLowerInvariant(input: "Hello World!")


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 15.33936798975388 < 28.421741662965232.
IsChangePoint: Marked as a change because one of 9/6/2022 1:06:44 PM, 9/23/2022 1:16:35 AM, 9/29/2022 7:42:19 AM, 10/11/2022 8:42:28 PM, 10/17/2022 3:19:47 PM, 11/2/2022 9:35:40 AM, 11/7/2022 4:10:19 PM, 11/20/2022 11:32:49 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM.
IsImprovementStdDev: Marked as improvement because 71.87177437651178 (T) = (0 -15.344066499676298) / Math.Sqrt((9.177259481156018 / (299)) + (0.00046580496224329503 / (5))) is greater than 1.9678502273660254 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (5) - 2, .975) and 0.4511098660950373 = (27.954713615481086 - 15.344066499676298) / 27.954713615481086 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Compare Jit Disasm

```assembly
; System.Tests.Perf_Char.Char_ToLowerInvariant(System.String)
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,40
       xor       eax,eax
       mov       [rsp+38],rax
       mov       rsi,rdx
       xor       edi,edi
       xor       ebx,ebx
       mov       ebp,[rsi+8]
       test      ebp,ebp
       jle       short M00_L05
M00_L00:
       mov       r9d,ebx
       movzx     r9d,word ptr [rsi+r9*2+0C]
       cmp       r9d,7F
       ja        short M00_L03
       lea       edx,[r9-41]
       cmp       edx,19
       jbe       short M00_L02
M00_L01:
       mov       r14d,r9d
       jmp       short M00_L04
M00_L02:
       or        r9d,20
       movzx     r9d,r9b
       jmp       short M00_L01
M00_L03:
       mov       rdx,21D27400718
       mov       rcx,[rdx]
       mov       [rsp+30],r9w
       xor       r9d,r9d
       mov       [rsp+38],r9d
       mov       dword ptr [rsp+20],1
       mov       [rsp+28],r9d
       lea       r9,[rsp+38]
       lea       rdx,[rsp+30]
       mov       r8d,1
       call      qword ptr [7FFF27547D08]
       movzx     r14d,word ptr [rsp+38]
M00_L04:
       add       edi,r14d
       inc       ebx
       cmp       ebp,ebx
       jg        short M00_L00
M00_L05:
       mov       eax,edi
       add       rsp,40
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       ret
; Total bytes of code 160

Docs

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions