DrewScoggins / performance-2

This repo contains benchmarks used for testing the performance of all .NET Runtimes
MIT License
0 stars 0 forks source link

[Perf] Changes at 2/18/2021 4:04:19 AM #4108

Open performanceautofiler[bot] opened 3 years ago

performanceautofiler[bot] commented 3 years ago

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline 9195df699fe25d2e752c2bc350c16dc199f02f7a
Compare caa00d4b76c87d648a94852bb6aac93e33fb9d04

Regressions in System.Reflection.Attributes

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[GetCustomAttributesClassMiss](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Reflection.Attributes.GetCustomAttributesClassMiss.html>) 206.22 ns 246.81 ns 1.20 1777.101489371513 1891.8715207115245 1.064582710681651 Trace Trace
[IsDefinedClassMiss](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Reflection.Attributes.IsDefinedClassMiss.html>) 121.48 ns 165.77 ns 1.36 1108.0904770324648 1219.7004990506039 1.100722841980411 Trace Trace
[GetCustomAttributesClassMissInherit](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Reflection.Attributes.GetCustomAttributesClassMissInherit.html>) 326.97 ns 439.35 ns 1.34
[GetCustomAttributesMethodBaseMissInherit](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Reflection.Attributes.GetCustomAttributesMethodBaseMissInherit.html>) 232.71 ns 286.75 ns 1.23
[IsDefinedMethodBaseMiss](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Reflection.Attributes.IsDefinedMethodBaseMiss.html>) 123.23 ns 174.01 ns 1.41 1112.1836205155296 1228.801810510855 1.1048551586663984 Trace Trace
[GetCustomAttributesMethodBaseMiss](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Reflection.Attributes.GetCustomAttributesMethodBaseMiss.html>) 204.34 ns 259.27 ns 1.27 1786.1651243068561 1898.6165043031997 1.0629568780993761 Trace Trace
[IsDefinedMethodBaseMissInherit](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Reflection.Attributes.IsDefinedMethodBaseMissInherit.html>) 145.73 ns 202.10 ns 1.39 1328.6590068884811 1446.6600499263136 1.0888121349616806 Trace Trace
[IsDefinedClassMissInherit](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Reflection.Attributes.IsDefinedClassMissInherit.html>) 1.00 μs 1.20 μs 1.20 8511.628428536185 8949.241049114777 1.0514135014530763 Trace Trace

graph graph graph graph graph graph graph graph Historical Data in Reporting System

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Reflection.Attributes*'
. ### Payloads [Baseline]() [Compare]() ### Histogram #### System.Reflection.Attributes.GetCustomAttributesClassMiss ```log [199.156 ; 205.364) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [205.364 ; 213.207) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [213.207 ; 217.682) | @@@@@@@@@@@@@@@@ [217.682 ; 223.374) | @@ [223.374 ; 232.066) | @@ [232.066 ; 238.243) | @ [238.243 ; 245.360) | @@@@@@ [245.360 ; 254.982) | @@@@@@@@@@@@@@@@@@@@@@@@@ ``` ### Baseline Jit Disasm ```assembly ; System.Reflection.Attributes.GetCustomAttributesClassMiss() push esi mov ecx,offset MT_System.Reflection.Attributes+NonAttributedClass call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov esi,eax mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 0 mov ecx,esi call dword ptr ds:[32CC] pop esi ret ; Total bytes of code 37 ``` ```assembly ; System.RuntimeType.GetCustomAttributes(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],4DA3218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.GetCustomAttributes(System.RuntimeType, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,0AC4010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,0AC4010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,0AC4010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` ### Compare Jit Disasm ```assembly ; System.Reflection.Attributes.GetCustomAttributesClassMiss() push esi mov ecx,offset MT_System.Reflection.Attributes+NonAttributedClass call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov esi,eax mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 0 mov ecx,esi call dword ptr ds:[32CC] pop esi ret ; Total bytes of code 37 ``` ```assembly ; System.RuntimeType.GetCustomAttributes(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],4E63218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.GetCustomAttributes(System.RuntimeType, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,2E14010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,2E14010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,2E14010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` #### System.Reflection.Attributes.IsDefinedClassMiss ```log [117.301 ; 120.408) | @@@@@@@@@@@@@@@@@@ [120.408 ; 124.561) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [124.561 ; 128.309) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [128.309 ; 132.461) | [132.461 ; 136.614) | [136.614 ; 140.766) | [140.766 ; 146.821) | @ [146.821 ; 150.974) | [150.974 ; 155.126) | [155.126 ; 158.638) | [158.638 ; 162.866) | @@@@@@@ [162.866 ; 167.019) | @@@@@@@@@@@@@@@@@@@@@@ [167.019 ; 171.881) | @@ ``` ### Baseline Jit Disasm ```assembly ; System.Reflection.Attributes.IsDefinedClassMiss() push esi mov ecx,offset MT_System.Reflection.Attributes+NonAttributedClass call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov esi,eax mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 0 mov ecx,esi call dword ptr ds:[32C4] pop esi ret ; Total bytes of code 37 ``` ```assembly ; System.RuntimeType.IsDefined(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],53D3218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.IsDefined(System.RuntimeType, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,2FD4010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,2FD4010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,2FD4010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` ### Compare Jit Disasm ```assembly ; System.Reflection.Attributes.IsDefinedClassMiss() push esi mov ecx,offset MT_System.Reflection.Attributes+NonAttributedClass call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov esi,eax mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 0 mov ecx,esi call dword ptr ds:[32C4] pop esi ret ; Total bytes of code 37 ``` ```assembly ; System.RuntimeType.IsDefined(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],4AC3218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.IsDefined(System.RuntimeType, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,7F4010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,7F4010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,7F4010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` #### System.Reflection.Attributes.GetCustomAttributesClassMissInherit ```log [314.968 ; 322.063) | @@@@@@ [322.063 ; 332.299) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [332.299 ; 341.776) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [341.776 ; 351.689) | @@@@@@@ [351.689 ; 361.925) | [361.925 ; 372.161) | [372.161 ; 382.396) | [382.396 ; 392.632) | [392.632 ; 402.868) | [402.868 ; 413.104) | [413.104 ; 425.763) | @@@ [425.763 ; 444.468) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@ ``` ### Compare Jit Disasm ```assembly ; System.Reflection.Attributes.GetCustomAttributesClassMissInherit() push esi mov ecx,offset MT_System.Reflection.Attributes+NonAttributedClass call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov esi,eax mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 1 mov ecx,esi call dword ptr ds:[32CC] pop esi ret ; Total bytes of code 37 ``` ```assembly ; System.RuntimeType.GetCustomAttributes(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],4C83218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.GetCustomAttributes(System.RuntimeType, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,2D44010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,2D44010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,2D44010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` #### System.Reflection.Attributes.GetCustomAttributesMethodBaseMissInherit ```log [225.679 ; 230.787) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [230.787 ; 236.069) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [236.069 ; 241.139) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [241.139 ; 247.430) | @@@@@@@ [247.430 ; 252.712) | @@@@@@@@@@@ [252.712 ; 262.955) | @ [262.955 ; 268.237) | [268.237 ; 273.520) | [273.520 ; 282.165) | @ [282.165 ; 296.360) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ``` ### Baseline Jit Disasm ```assembly ; System.Reflection.Attributes.GetCustomAttributesMethodBaseMissInherit() push esi mov esi,ds:[51FC] mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 1 mov ecx,esi call dword ptr ds:[187C] pop esi ret ; Total bytes of code 31 ``` ```assembly ; System.Reflection.RuntimeMethodInfo.GetCustomAttributes(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],0C63218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.GetCustomAttributes(System.Reflection.RuntimeMethodInfo, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,7F4010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,7F4010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,7F4010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` #### System.Reflection.Attributes.IsDefinedMethodBaseMiss ```log [115.009 ; 118.318) | @@@@@@ [118.318 ; 123.438) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [123.438 ; 127.915) | @@@@@@@@@@@@@@@@@@@@@@@@@@@ [127.915 ; 132.338) | [132.338 ; 137.458) | @ [137.458 ; 142.578) | [142.578 ; 147.697) | [147.697 ; 152.817) | [152.817 ; 157.937) | [157.937 ; 163.057) | [163.057 ; 166.150) | [166.150 ; 169.569) | @ [169.569 ; 174.689) | @@@@@@@@@@@@@@@@@@@@ [174.689 ; 180.786) | @@@@@@@@@ ``` ### Baseline Jit Disasm ```assembly ; System.Reflection.Attributes.IsDefinedMethodBaseMiss() push esi mov esi,ds:[51FC] mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 0 mov ecx,esi call dword ptr ds:[150C] pop esi ret ; Total bytes of code 31 ``` ```assembly ; System.Reflection.RuntimeMethodInfo.IsDefined(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],4C63218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.IsDefined(System.Reflection.RuntimeMethodInfo, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,2AD4010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,2AD4010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,2AD4010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` ### Compare Jit Disasm ```assembly ; System.Reflection.Attributes.IsDefinedMethodBaseMiss() push esi mov esi,ds:[51FC] mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 0 mov ecx,esi call dword ptr ds:[1874] pop esi ret ; Total bytes of code 31 ``` ```assembly ; System.Reflection.RuntimeMethodInfo.IsDefined(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],6D3218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.IsDefined(System.Reflection.RuntimeMethodInfo, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,114010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,114010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,114010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` #### System.Reflection.Attributes.GetCustomAttributesMethodBaseMiss ```log [198.180 ; 203.333) | @@@@@@@@@@@@@@@@@@@ [203.333 ; 208.879) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [208.879 ; 214.526) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [214.526 ; 220.091) | @@@@@ [220.091 ; 228.473) | @@@@ [228.473 ; 234.682) | @ [234.682 ; 240.229) | [240.229 ; 245.775) | [245.775 ; 253.634) | @@@@@@ [253.634 ; 260.444) | @@@@@@@@@@@@@@@@@@@ [260.444 ; 270.664) | @@@@@@ [270.664 ; 276.210) | [276.210 ; 281.757) | [281.757 ; 287.303) | [287.303 ; 292.849) | [292.849 ; 298.396) | [298.396 ; 303.942) | [303.942 ; 309.489) | [309.489 ; 324.859) | @ ``` ### Baseline Jit Disasm ```assembly ; System.Reflection.Attributes.GetCustomAttributesMethodBaseMiss() push esi mov esi,ds:[51FC] mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 0 mov ecx,esi call dword ptr ds:[187C] pop esi ret ; Total bytes of code 31 ``` ```assembly ; System.Reflection.RuntimeMethodInfo.GetCustomAttributes(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],5613218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.GetCustomAttributes(System.Reflection.RuntimeMethodInfo, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,3554010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,3554010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,3554010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` ### Compare Jit Disasm ```assembly ; System.Reflection.Attributes.GetCustomAttributesMethodBaseMiss() push esi mov esi,ds:[51FC] mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 0 mov ecx,esi call dword ptr ds:[155C] pop esi ret ; Total bytes of code 31 ``` ```assembly ; System.Reflection.RuntimeMethodInfo.GetCustomAttributes(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],5473218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.GetCustomAttributes(System.Reflection.RuntimeMethodInfo, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,34D4010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,34D4010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,34D4010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` #### System.Reflection.Attributes.IsDefinedMethodBaseMissInherit ```log [140.116 ; 144.638) | @@@@@@@@ [144.638 ; 149.692) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [149.692 ; 154.375) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [154.375 ; 160.795) | @@@@ [160.795 ; 165.849) | @@@ [165.849 ; 170.902) | [170.902 ; 175.956) | [175.956 ; 181.010) | [181.010 ; 186.064) | [186.064 ; 189.605) | [189.605 ; 194.845) | @ [194.845 ; 199.899) | @@@@@@@@@@@@@@@@@@@@@@@ [199.899 ; 206.725) | @@@@@@ ``` ### Baseline Jit Disasm ```assembly ; System.Reflection.Attributes.IsDefinedMethodBaseMissInherit() push esi mov esi,ds:[51FC] mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 1 mov ecx,esi call dword ptr ds:[1874] pop esi ret ; Total bytes of code 31 ``` ```assembly ; System.Reflection.RuntimeMethodInfo.IsDefined(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],0B13218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.IsDefined(System.Reflection.RuntimeMethodInfo, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,5D4010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,5D4010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,5D4010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` ### Compare Jit Disasm ```assembly ; System.Reflection.Attributes.IsDefinedMethodBaseMissInherit() push esi mov esi,ds:[51FC] mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 1 mov ecx,esi call dword ptr ds:[1554] pop esi ret ; Total bytes of code 31 ``` ```assembly ; System.Reflection.RuntimeMethodInfo.IsDefined(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],48E3218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.IsDefined(System.Reflection.RuntimeMethodInfo, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,25D4010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,25D4010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,25D4010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` #### System.Reflection.Attributes.IsDefinedClassMissInherit ```log [ 988.057 ; 1027.284) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [1027.284 ; 1070.509) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [1070.509 ; 1111.681) | @@@@@@@@@@@@@@@@@@ [1111.681 ; 1136.427) | [1136.427 ; 1175.337) | @@@ [1175.337 ; 1218.163) | @@@@@@@@@@@@@@@@ [1218.163 ; 1286.314) | @@@@@@@@@@@@@@@@@@@@@ ``` ### Baseline Jit Disasm ```assembly ; System.Reflection.Attributes.IsDefinedClassMissInherit() push esi mov ecx,offset MT_System.Reflection.Attributes+NonAttributedClass call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov esi,eax mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 1 mov ecx,esi call dword ptr ds:[32C4] pop esi ret ; Total bytes of code 37 ``` ```assembly ; System.RuntimeType.IsDefined(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],54E3218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.IsDefined(System.RuntimeType, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,3524010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,3524010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,3524010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` ### Compare Jit Disasm ```assembly ; System.Reflection.Attributes.IsDefinedClassMissInherit() push esi mov ecx,offset MT_System.Reflection.Attributes+NonAttributedClass call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov esi,eax mov ecx,offset MT_System.Reflection.Attributes+MyAttribute call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push 1 mov ecx,esi call dword ptr ds:[32C4] pop esi ret ; Total bytes of code 37 ``` ```assembly ; System.RuntimeType.IsDefined(System.Type, Boolean) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx test edx,edx je short M01_L01 mov ecx,edx mov eax,[edx] mov eax,[eax+34] call dword ptr [eax+4] mov edx,eax test edx,edx je short M01_L00 cmp dword ptr [edx],2943218 je short M01_L00 xor edx,edx M01_L00: test edx,edx je short M01_L02 mov ebx,[ebp+8] movzx ecx,bl push ecx mov ecx,esi call System.Reflection.CustomAttribute.IsDefined(System.RuntimeType, System.RuntimeType, Boolean) pop ebx pop esi pop edi pop ebp ret 4 M01_L01: mov ecx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0EB mov edx,1E4010 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call System.ArgumentNullException..ctor(System.String) mov ecx,esi call CORINFO_HELP_THROW M01_L02: mov ecx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,4B99 mov edx,1E4010 call CORINFO_HELP_STRCNS mov ecx,eax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov edi,eax mov ecx,0EB mov edx,1E4010 call CORINFO_HELP_STRCNS push eax mov edx,edi mov ecx,esi call System.ArgumentException..ctor(System.String, System.String) mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 177 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)
### Run Information Architecture | x86 -- | -- OS | Windows 10.0.18362 Baseline | [ada53f0c05efd882e29e8f225a483521f08e3caa](https://github.com/dotnet/runtime/commit/ada53f0c05efd882e29e8f225a483521f08e3caa) Compare | [caa00d4b76c87d648a94852bb6aac93e33fb9d04](https://github.com/dotnet/runtime/commit/caa00d4b76c87d648a94852bb6aac93e33fb9d04) ### Regressions in Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesBenchmark Benchmark | Baseline | Test | Test/Base | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL -- | -- | -- | -- | -- | -- | -- | -- | -- [CreateInstance]() | 1.19 μs | 1.32 μs | 1.11 | 9798.330850887769 | 10271.116421670788 | 1.0482516438746485 | [Trace](https://helixri107v0xdeko0k025g8.blob.core.windows.net/results-2f9102491f8d48c188/Collect%20Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesBenchmark.CreateInstance/artifacts/BenchmarkDotNet.Artifacts/Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesBenchmark.CreateInstance-20210223-153017.etl?sv=2019-07-07&se=2021-05-24T23%3A27%3A21Z&sr=c&sp=rl&sig=G4HpDLLqxGGLbpR%2B0zuZvJRIwP%2FiqUaASthC%2FgTy7qs%3D) | [Trace](https://helixri107v0xdeko0k025g8.blob.core.windows.net/results-8d6ba01c80c543d39d/Collect%20Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesBenchmark.CreateInstance/artifacts/BenchmarkDotNet.Artifacts/Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesBenchmark.CreateInstance-20210223-152831.etl?sv=2019-07-07&se=2021-05-24T23%3A27%3A21Z&sr=c&sp=rl&sig=OA7VRetmk9oGJzoqz6coniGs4y7il2YUhuAPdLDDHv0%3D) ![graph]() [Historical Data in Reporting System]() ### Repro ```cmd git clone https://github.com/dotnet/performance.git py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesBenchmark*' ```
. ### Payloads [Baseline]() [Compare]() ### Histogram #### Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesBenchmark.CreateInstance ```log [1104.372 ; 1140.945) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [1140.945 ; 1164.573) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [1164.573 ; 1210.571) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [1210.571 ; 1259.841) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [1259.841 ; 1292.887) | @ [1292.887 ; 1321.411) | @@@@ [1321.411 ; 1357.455) | @@@@@@@@@@@@@@@@@@@@@@ [1357.455 ; 1408.205) | @@@@@@@@ [1408.205 ; 1457.693) | @@ ``` ### Baseline Jit Disasm ```assembly ; BenchmarkDotNet.Autogenerated.Runnable_0.__ForDisassemblyDiagnoser__() push ebp mov ebp,esp push eax mov [ebp+0FFFC],ecx mov ecx,[ebp+0FFFC] cmp dword ptr [ecx+2C],0B jne short M00_L00 mov ecx,[ebp+0FFFC] call 09ECE1A0 mov esp,ebp pop ebp ret M00_L00: xor eax,eax mov esp,ebp pop ebp ret ; Total bytes of code 34 ``` ### Compare Jit Disasm ```assembly ; Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesBenchmark.CreateInstance() mov edx,[ecx+4] mov eax,[ecx+0C] push offset MD_Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(System.IServiceProvider, System.Object[]) mov ecx,edx mov edx,eax call Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance[[System.__Canon, System.Private.CoreLib]](System.IServiceProvider, System.Object[]) ret ; Total bytes of code 21 ``` ```assembly ; Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance[[System.__Canon, System.Private.CoreLib]](System.IServiceProvider, System.Object[]) push ebp mov ebp,esp push edi push esi push ebx push eax mov eax,[ebp+8] mov [ebp+0FFF0],eax mov esi,ecx mov edi,edx mov ecx,[ebp+8] mov ebx,[ecx+0C] mov ecx,[ebx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov edx,eax push edi mov ecx,esi call Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(System.IServiceProvider, System.Type, System.Object[]) mov edx,eax mov ecx,[ebx] call CORINFO_HELP_CHKCASTARRAY pop ecx pop ebx pop esi pop edi pop ebp ret 4 ; Total bytes of code 57 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)
performanceautofiler[bot] commented 3 years ago

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline ada53f0c05efd882e29e8f225a483521f08e3caa
Compare caa00d4b76c87d648a94852bb6aac93e33fb9d04

Regressions in System.Text.Json.Serialization.Tests.WriteJson<ArrayList>

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[SerializeToStream](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Text.Json.Serialization.Tests.WriteJson(ArrayList).SerializeToStream.html>) 10.39 μs 11.38 μs 1.09
[SerializeObjectProperty](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Text.Json.Serialization.Tests.WriteJson(ArrayList).SerializeObjectProperty.html>) 11.19 μs 12.44 μs 1.11
[SerializeToString](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Text.Json.Serialization.Tests.WriteJson(ArrayList).SerializeToString.html>) 11.02 μs 11.93 μs 1.08
[SerializeToUtf8Bytes](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/master_x86_Windows 10.0.18362/System.Text.Json.Serialization.Tests.WriteJson(ArrayList).SerializeToUtf8Bytes.html>) 10.59 μs 13.00 μs 1.23

graph graph graph graph Historical Data in Reporting System

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Text.Json.Serialization.Tests.WriteJson&lt;ArrayList&gt;*'
. ### Payloads [Baseline]() [Compare]() ### Histogram #### System.Text.Json.Serialization.Tests.WriteJson.SerializeToStream ```log [10037.515 ; 10401.812) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [10401.812 ; 10777.310) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [10777.310 ; 11119.379) | @@@@@@@@@@@@@@@@@@@@@@@@@ [11119.379 ; 11455.188) | @@@@@@@@@@@@@@@@@@@@@@@@@@@ [11455.188 ; 11763.158) | @@@@@@@@@@@ ``` #### System.Text.Json.Serialization.Tests.WriteJson.SerializeObjectProperty ```log [10850.316 ; 11091.710) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [11091.710 ; 11381.863) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [11381.863 ; 11767.573) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [11767.573 ; 12030.470) | @@@@@@ [12030.470 ; 12686.416) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ``` #### System.Text.Json.Serialization.Tests.WriteJson.SerializeToString ```log [10471.577 ; 10761.716) | @@@@@@@@@@@@@@@@@@@@@@ [10761.716 ; 11148.412) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [11148.412 ; 11460.995) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [11460.995 ; 11711.684) | @@ [11711.684 ; 12175.535) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ``` #### System.Text.Json.Serialization.Tests.WriteJson.SerializeToUtf8Bytes ```log [10107.209 ; 10376.750) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [10376.750 ; 10760.553) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [10760.553 ; 10994.882) | @@@@@@@@@@@@@@@@ [10994.882 ; 11217.001) | @ [11217.001 ; 11441.072) | [11441.072 ; 11887.038) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [11887.038 ; 12144.368) | [12144.368 ; 12401.698) | [12401.698 ; 12659.029) | [12659.029 ; 13062.474) | @ ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)