-
-
Notifications
You must be signed in to change notification settings - Fork 990
default(object)
takes more time than expected in net7.0
#2366
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
Comments
Adding
Changing Removing
Adding more un-attributed methods gave expected results.
Changing public class JustAnAttributeAttribute : Attribute { }
I'm not sure what conclusions can be gleaned from this.
|
@AndreyAkinshin How do I do that? |
I suspect that it's related to code alignment and there is nothing we can do about it. Please see #2138 (comment) |
The easiest way is to open BenchmarkDotNet solution in Visual Studio, run the target benchmark, attach VS to the benchmarking process, put a breakpoint on the relevant line, and check out the disassembly view. |
That doesn't seem useful. I have to use a debug build to do that, and that changes the results. |
You could also create a custom
|
That got this result. .NET 7.0.7 (7.0.723.27404), X64 RyuJIT SSE3; Benchmarks.WithGlobalSetup.DefaultClass()
7FF9CD18A120 xor eax,eax
7FF9CD18A122 ret
; Total bytes of code 3 .NET 7.0.7 (7.0.723.27404), X64 RyuJIT SSE3; Benchmarks.WithoutGlobalSetup.DefaultClass()
7FF9CD16A1E0 xor eax,eax
7FF9CD16A1E2 ret
; Total bytes of code 3 [Edit] With net7.0 asm
.NET 7.0.7 (7.0.723.27404), X64 RyuJIT SSE3; BenchmarkDotNet.Autogenerated.Runnable_0.WorkloadActionUnroll(Int64)
7FFA490F8D40 push rdi
7FFA490F8D41 push rsi
7FFA490F8D42 push rbp
7FFA490F8D43 push rbx
7FFA490F8D44 sub rsp,28
7FFA490F8D48 mov rsi,rcx
7FFA490F8D4B mov rdi,rdx
7FFA490F8D4E xor ebx,ebx
7FFA490F8D50 test rdi,rdi
7FFA490F8D53 jle near ptr M00_L01
M00_L00:
7FFA490F8D59 mov rbp,[rsi+38]
7FFA490F8D5D mov rax,[rsi+30]
7FFA490F8D61 mov rcx,[rax+8]
7FFA490F8D65 call qword ptr [rax+18]
7FFA490F8D68 lea rcx,[rbp+8]
7FFA490F8D6C mov rdx,rax
7FFA490F8D6F call CORINFO_HELP_ASSIGN_REF
7FFA490F8D74 xor ecx,ecx
7FFA490F8D76 mov [rbp+8],rcx
7FFA490F8D7A mov rbp,[rsi+38]
7FFA490F8D7E mov rax,[rsi+30]
7FFA490F8D82 mov rcx,[rax+8]
7FFA490F8D86 call qword ptr [rax+18]
7FFA490F8D89 lea rcx,[rbp+8]
7FFA490F8D8D mov rdx,rax
7FFA490F8D90 call CORINFO_HELP_ASSIGN_REF
7FFA490F8D95 xor ecx,ecx
7FFA490F8D97 mov [rbp+8],rcx
7FFA490F8D9B mov rbp,[rsi+38]
7FFA490F8D9F mov rax,[rsi+30]
7FFA490F8DA3 mov rcx,[rax+8]
7FFA490F8DA7 call qword ptr [rax+18]
7FFA490F8DAA lea rcx,[rbp+8]
7FFA490F8DAE mov rdx,rax
7FFA490F8DB1 call CORINFO_HELP_ASSIGN_REF
7FFA490F8DB6 xor ecx,ecx
7FFA490F8DB8 mov [rbp+8],rcx
7FFA490F8DBC mov rbp,[rsi+38]
7FFA490F8DC0 mov rax,[rsi+30]
7FFA490F8DC4 mov rcx,[rax+8]
7FFA490F8DC8 call qword ptr [rax+18]
7FFA490F8DCB lea rcx,[rbp+8]
7FFA490F8DCF mov rdx,rax
7FFA490F8DD2 call CORINFO_HELP_ASSIGN_REF
7FFA490F8DD7 xor ecx,ecx
7FFA490F8DD9 mov [rbp+8],rcx
7FFA490F8DDD mov rbp,[rsi+38]
7FFA490F8DE1 mov rax,[rsi+30]
7FFA490F8DE5 mov rcx,[rax+8]
7FFA490F8DE9 call qword ptr [rax+18]
7FFA490F8DEC lea rcx,[rbp+8]
7FFA490F8DF0 mov rdx,rax
7FFA490F8DF3 call CORINFO_HELP_ASSIGN_REF
7FFA490F8DF8 xor ecx,ecx
7FFA490F8DFA mov [rbp+8],rcx
7FFA490F8DFE mov rbp,[rsi+38]
7FFA490F8E02 mov rax,[rsi+30]
7FFA490F8E06 mov rcx,[rax+8]
7FFA490F8E0A call qword ptr [rax+18]
7FFA490F8E0D lea rcx,[rbp+8]
7FFA490F8E11 mov rdx,rax
7FFA490F8E14 call CORINFO_HELP_ASSIGN_REF
7FFA490F8E19 xor ecx,ecx
7FFA490F8E1B mov [rbp+8],rcx
7FFA490F8E1F mov rbp,[rsi+38]
7FFA490F8E23 mov rax,[rsi+30]
7FFA490F8E27 mov rcx,[rax+8]
7FFA490F8E2B call qword ptr [rax+18]
7FFA490F8E2E lea rcx,[rbp+8]
7FFA490F8E32 mov rdx,rax
7FFA490F8E35 call CORINFO_HELP_ASSIGN_REF
7FFA490F8E3A xor ecx,ecx
7FFA490F8E3C mov [rbp+8],rcx
7FFA490F8E40 mov rbp,[rsi+38]
7FFA490F8E44 mov rax,[rsi+30]
7FFA490F8E48 mov rcx,[rax+8]
7FFA490F8E4C call qword ptr [rax+18]
7FFA490F8E4F lea rcx,[rbp+8]
7FFA490F8E53 mov rdx,rax
7FFA490F8E56 call CORINFO_HELP_ASSIGN_REF
7FFA490F8E5B xor ecx,ecx
7FFA490F8E5D mov [rbp+8],rcx
7FFA490F8E61 mov rbp,[rsi+38]
7FFA490F8E65 mov rax,[rsi+30]
7FFA490F8E69 mov rcx,[rax+8]
7FFA490F8E6D call qword ptr [rax+18]
7FFA490F8E70 lea rcx,[rbp+8]
7FFA490F8E74 mov rdx,rax
7FFA490F8E77 call CORINFO_HELP_ASSIGN_REF
7FFA490F8E7C xor ecx,ecx
7FFA490F8E7E mov [rbp+8],rcx
7FFA490F8E82 mov rbp,[rsi+38]
7FFA490F8E86 mov rax,[rsi+30]
7FFA490F8E8A mov rcx,[rax+8]
7FFA490F8E8E call qword ptr [rax+18]
7FFA490F8E91 lea rcx,[rbp+8]
7FFA490F8E95 mov rdx,rax
7FFA490F8E98 call CORINFO_HELP_ASSIGN_REF
7FFA490F8E9D xor ecx,ecx
7FFA490F8E9F mov [rbp+8],rcx
7FFA490F8EA3 mov rbp,[rsi+38]
7FFA490F8EA7 mov rax,[rsi+30]
7FFA490F8EAB mov rcx,[rax+8]
7FFA490F8EAF call qword ptr [rax+18]
7FFA490F8EB2 lea rcx,[rbp+8]
7FFA490F8EB6 mov rdx,rax
7FFA490F8EB9 call CORINFO_HELP_ASSIGN_REF
7FFA490F8EBE xor ecx,ecx
7FFA490F8EC0 mov [rbp+8],rcx
7FFA490F8EC4 mov rbp,[rsi+38]
7FFA490F8EC8 mov rax,[rsi+30]
7FFA490F8ECC mov rcx,[rax+8]
7FFA490F8ED0 call qword ptr [rax+18]
7FFA490F8ED3 lea rcx,[rbp+8]
7FFA490F8ED7 mov rdx,rax
7FFA490F8EDA call CORINFO_HELP_ASSIGN_REF
7FFA490F8EDF xor ecx,ecx
7FFA490F8EE1 mov [rbp+8],rcx
7FFA490F8EE5 mov rbp,[rsi+38]
7FFA490F8EE9 mov rax,[rsi+30]
7FFA490F8EED mov rcx,[rax+8]
7FFA490F8EF1 call qword ptr [rax+18]
7FFA490F8EF4 lea rcx,[rbp+8]
7FFA490F8EF8 mov rdx,rax
7FFA490F8EFB call CORINFO_HELP_ASSIGN_REF
7FFA490F8F00 xor ecx,ecx
7FFA490F8F02 mov [rbp+8],rcx
7FFA490F8F06 mov rbp,[rsi+38]
7FFA490F8F0A mov rax,[rsi+30]
7FFA490F8F0E mov rcx,[rax+8]
7FFA490F8F12 call qword ptr [rax+18]
7FFA490F8F15 lea rcx,[rbp+8]
7FFA490F8F19 mov rdx,rax
7FFA490F8F1C call CORINFO_HELP_ASSIGN_REF
7FFA490F8F21 xor ecx,ecx
7FFA490F8F23 mov [rbp+8],rcx
7FFA490F8F27 mov rbp,[rsi+38]
7FFA490F8F2B mov rax,[rsi+30]
7FFA490F8F2F mov rcx,[rax+8]
7FFA490F8F33 call qword ptr [rax+18]
7FFA490F8F36 lea rcx,[rbp+8]
7FFA490F8F3A mov rdx,rax
7FFA490F8F3D call CORINFO_HELP_ASSIGN_REF
7FFA490F8F42 xor ecx,ecx
7FFA490F8F44 mov [rbp+8],rcx
7FFA490F8F48 mov rbp,[rsi+38]
7FFA490F8F4C mov rax,[rsi+30]
7FFA490F8F50 mov rcx,[rax+8]
7FFA490F8F54 call qword ptr [rax+18]
7FFA490F8F57 lea rcx,[rbp+8]
7FFA490F8F5B mov rdx,rax
7FFA490F8F5E call CORINFO_HELP_ASSIGN_REF
7FFA490F8F63 xor eax,eax
7FFA490F8F65 mov [rbp+8],rax
7FFA490F8F69 inc rbx
7FFA490F8F6C cmp rbx,rdi
7FFA490F8F6F jl near ptr M00_L00
M00_L01:
7FFA490F8F75 add rsp,28
7FFA490F8F79 pop rbx
7FFA490F8F7A pop rbp
7FFA490F8F7B pop rsi
7FFA490F8F7C pop rdi
7FFA490F8F7D ret
; Total bytes of code 574 ; Benchmarks.WithGlobalSetup.DefaultClass()
7FFA490FA6C0 xor eax,eax
7FFA490FA6C2 ret
; Total bytes of code 3 .NET 7.0.7 (7.0.723.27404), X64 RyuJIT SSE3; BenchmarkDotNet.Autogenerated.Runnable_1.WorkloadActionUnroll(Int64)
7FFA490E8E00 push rdi
7FFA490E8E01 push rsi
7FFA490E8E02 push rbp
7FFA490E8E03 push rbx
7FFA490E8E04 sub rsp,28
7FFA490E8E08 mov rsi,rcx
7FFA490E8E0B mov rdi,rdx
7FFA490E8E0E xor ebx,ebx
7FFA490E8E10 test rdi,rdi
7FFA490E8E13 jle near ptr M00_L01
M00_L00:
7FFA490E8E19 mov rbp,[rsi+38]
7FFA490E8E1D mov rax,[rsi+30]
7FFA490E8E21 mov rcx,[rax+8]
7FFA490E8E25 call qword ptr [rax+18]
7FFA490E8E28 lea rcx,[rbp+8]
7FFA490E8E2C mov rdx,rax
7FFA490E8E2F call CORINFO_HELP_ASSIGN_REF
7FFA490E8E34 xor ecx,ecx
7FFA490E8E36 mov [rbp+8],rcx
7FFA490E8E3A mov rbp,[rsi+38]
7FFA490E8E3E mov rax,[rsi+30]
7FFA490E8E42 mov rcx,[rax+8]
7FFA490E8E46 call qword ptr [rax+18]
7FFA490E8E49 lea rcx,[rbp+8]
7FFA490E8E4D mov rdx,rax
7FFA490E8E50 call CORINFO_HELP_ASSIGN_REF
7FFA490E8E55 xor ecx,ecx
7FFA490E8E57 mov [rbp+8],rcx
7FFA490E8E5B mov rbp,[rsi+38]
7FFA490E8E5F mov rax,[rsi+30]
7FFA490E8E63 mov rcx,[rax+8]
7FFA490E8E67 call qword ptr [rax+18]
7FFA490E8E6A lea rcx,[rbp+8]
7FFA490E8E6E mov rdx,rax
7FFA490E8E71 call CORINFO_HELP_ASSIGN_REF
7FFA490E8E76 xor ecx,ecx
7FFA490E8E78 mov [rbp+8],rcx
7FFA490E8E7C mov rbp,[rsi+38]
7FFA490E8E80 mov rax,[rsi+30]
7FFA490E8E84 mov rcx,[rax+8]
7FFA490E8E88 call qword ptr [rax+18]
7FFA490E8E8B lea rcx,[rbp+8]
7FFA490E8E8F mov rdx,rax
7FFA490E8E92 call CORINFO_HELP_ASSIGN_REF
7FFA490E8E97 xor ecx,ecx
7FFA490E8E99 mov [rbp+8],rcx
7FFA490E8E9D mov rbp,[rsi+38]
7FFA490E8EA1 mov rax,[rsi+30]
7FFA490E8EA5 mov rcx,[rax+8]
7FFA490E8EA9 call qword ptr [rax+18]
7FFA490E8EAC lea rcx,[rbp+8]
7FFA490E8EB0 mov rdx,rax
7FFA490E8EB3 call CORINFO_HELP_ASSIGN_REF
7FFA490E8EB8 xor ecx,ecx
7FFA490E8EBA mov [rbp+8],rcx
7FFA490E8EBE mov rbp,[rsi+38]
7FFA490E8EC2 mov rax,[rsi+30]
7FFA490E8EC6 mov rcx,[rax+8]
7FFA490E8ECA call qword ptr [rax+18]
7FFA490E8ECD lea rcx,[rbp+8]
7FFA490E8ED1 mov rdx,rax
7FFA490E8ED4 call CORINFO_HELP_ASSIGN_REF
7FFA490E8ED9 xor ecx,ecx
7FFA490E8EDB mov [rbp+8],rcx
7FFA490E8EDF mov rbp,[rsi+38]
7FFA490E8EE3 mov rax,[rsi+30]
7FFA490E8EE7 mov rcx,[rax+8]
7FFA490E8EEB call qword ptr [rax+18]
7FFA490E8EEE lea rcx,[rbp+8]
7FFA490E8EF2 mov rdx,rax
7FFA490E8EF5 call CORINFO_HELP_ASSIGN_REF
7FFA490E8EFA xor ecx,ecx
7FFA490E8EFC mov [rbp+8],rcx
7FFA490E8F00 mov rbp,[rsi+38]
7FFA490E8F04 mov rax,[rsi+30]
7FFA490E8F08 mov rcx,[rax+8]
7FFA490E8F0C call qword ptr [rax+18]
7FFA490E8F0F lea rcx,[rbp+8]
7FFA490E8F13 mov rdx,rax
7FFA490E8F16 call CORINFO_HELP_ASSIGN_REF
7FFA490E8F1B xor ecx,ecx
7FFA490E8F1D mov [rbp+8],rcx
7FFA490E8F21 mov rbp,[rsi+38]
7FFA490E8F25 mov rax,[rsi+30]
7FFA490E8F29 mov rcx,[rax+8]
7FFA490E8F2D call qword ptr [rax+18]
7FFA490E8F30 lea rcx,[rbp+8]
7FFA490E8F34 mov rdx,rax
7FFA490E8F37 call CORINFO_HELP_ASSIGN_REF
7FFA490E8F3C xor ecx,ecx
7FFA490E8F3E mov [rbp+8],rcx
7FFA490E8F42 mov rbp,[rsi+38]
7FFA490E8F46 mov rax,[rsi+30]
7FFA490E8F4A mov rcx,[rax+8]
7FFA490E8F4E call qword ptr [rax+18]
7FFA490E8F51 lea rcx,[rbp+8]
7FFA490E8F55 mov rdx,rax
7FFA490E8F58 call CORINFO_HELP_ASSIGN_REF
7FFA490E8F5D xor ecx,ecx
7FFA490E8F5F mov [rbp+8],rcx
7FFA490E8F63 mov rbp,[rsi+38]
7FFA490E8F67 mov rax,[rsi+30]
7FFA490E8F6B mov rcx,[rax+8]
7FFA490E8F6F call qword ptr [rax+18]
7FFA490E8F72 lea rcx,[rbp+8]
7FFA490E8F76 mov rdx,rax
7FFA490E8F79 call CORINFO_HELP_ASSIGN_REF
7FFA490E8F7E xor ecx,ecx
7FFA490E8F80 mov [rbp+8],rcx
7FFA490E8F84 mov rbp,[rsi+38]
7FFA490E8F88 mov rax,[rsi+30]
7FFA490E8F8C mov rcx,[rax+8]
7FFA490E8F90 call qword ptr [rax+18]
7FFA490E8F93 lea rcx,[rbp+8]
7FFA490E8F97 mov rdx,rax
7FFA490E8F9A call CORINFO_HELP_ASSIGN_REF
7FFA490E8F9F xor ecx,ecx
7FFA490E8FA1 mov [rbp+8],rcx
7FFA490E8FA5 mov rbp,[rsi+38]
7FFA490E8FA9 mov rax,[rsi+30]
7FFA490E8FAD mov rcx,[rax+8]
7FFA490E8FB1 call qword ptr [rax+18]
7FFA490E8FB4 lea rcx,[rbp+8]
7FFA490E8FB8 mov rdx,rax
7FFA490E8FBB call CORINFO_HELP_ASSIGN_REF
7FFA490E8FC0 xor ecx,ecx
7FFA490E8FC2 mov [rbp+8],rcx
7FFA490E8FC6 mov rbp,[rsi+38]
7FFA490E8FCA mov rax,[rsi+30]
7FFA490E8FCE mov rcx,[rax+8]
7FFA490E8FD2 call qword ptr [rax+18]
7FFA490E8FD5 lea rcx,[rbp+8]
7FFA490E8FD9 mov rdx,rax
7FFA490E8FDC call CORINFO_HELP_ASSIGN_REF
7FFA490E8FE1 xor ecx,ecx
7FFA490E8FE3 mov [rbp+8],rcx
7FFA490E8FE7 mov rbp,[rsi+38]
7FFA490E8FEB mov rax,[rsi+30]
7FFA490E8FEF mov rcx,[rax+8]
7FFA490E8FF3 call qword ptr [rax+18]
7FFA490E8FF6 lea rcx,[rbp+8]
7FFA490E8FFA mov rdx,rax
7FFA490E8FFD call CORINFO_HELP_ASSIGN_REF
7FFA490E9002 xor ecx,ecx
7FFA490E9004 mov [rbp+8],rcx
7FFA490E9008 mov rbp,[rsi+38]
7FFA490E900C mov rax,[rsi+30]
7FFA490E9010 mov rcx,[rax+8]
7FFA490E9014 call qword ptr [rax+18]
7FFA490E9017 lea rcx,[rbp+8]
7FFA490E901B mov rdx,rax
7FFA490E901E call CORINFO_HELP_ASSIGN_REF
7FFA490E9023 xor eax,eax
7FFA490E9025 mov [rbp+8],rax
7FFA490E9029 inc rbx
7FFA490E902C cmp rbx,rdi
7FFA490E902F jl near ptr M00_L00
M00_L01:
7FFA490E9035 add rsp,28
7FFA490E9039 pop rbx
7FFA490E903A pop rbp
7FFA490E903B pop rsi
7FFA490E903C pop rdi
7FFA490E903D ret
; Total bytes of code 574 ; Benchmarks.WithoutGlobalSetup.DefaultClass()
7FFA490EA780 xor eax,eax
7FFA490EA782 ret
; Total bytes of code 3 [Edit2] net6.0 for comparison (it looks exactly the same to me) net6.0 asm
.NET 6.0.16 (6.0.1623.17311), X64 RyuJIT SSE3; BenchmarkDotNet.Autogenerated.Runnable_0.WorkloadActionUnroll(Int64)
7FFA4E071C60 push rdi
7FFA4E071C61 push rsi
7FFA4E071C62 push rbp
7FFA4E071C63 push rbx
7FFA4E071C64 sub rsp,28
7FFA4E071C68 mov rsi,rcx
7FFA4E071C6B mov rdi,rdx
7FFA4E071C6E xor ebx,ebx
7FFA4E071C70 test rdi,rdi
7FFA4E071C73 jle near ptr M00_L01
M00_L00:
7FFA4E071C79 mov rbp,[rsi+38]
7FFA4E071C7D mov rax,[rsi+30]
7FFA4E071C81 mov rcx,[rax+8]
7FFA4E071C85 call qword ptr [rax+18]
7FFA4E071C88 lea rcx,[rbp+8]
7FFA4E071C8C mov rdx,rax
7FFA4E071C8F call CORINFO_HELP_ASSIGN_REF
7FFA4E071C94 xor ecx,ecx
7FFA4E071C96 mov [rbp+8],rcx
7FFA4E071C9A mov rbp,[rsi+38]
7FFA4E071C9E mov rax,[rsi+30]
7FFA4E071CA2 mov rcx,[rax+8]
7FFA4E071CA6 call qword ptr [rax+18]
7FFA4E071CA9 lea rcx,[rbp+8]
7FFA4E071CAD mov rdx,rax
7FFA4E071CB0 call CORINFO_HELP_ASSIGN_REF
7FFA4E071CB5 xor ecx,ecx
7FFA4E071CB7 mov [rbp+8],rcx
7FFA4E071CBB mov rbp,[rsi+38]
7FFA4E071CBF mov rax,[rsi+30]
7FFA4E071CC3 mov rcx,[rax+8]
7FFA4E071CC7 call qword ptr [rax+18]
7FFA4E071CCA lea rcx,[rbp+8]
7FFA4E071CCE mov rdx,rax
7FFA4E071CD1 call CORINFO_HELP_ASSIGN_REF
7FFA4E071CD6 xor ecx,ecx
7FFA4E071CD8 mov [rbp+8],rcx
7FFA4E071CDC mov rbp,[rsi+38]
7FFA4E071CE0 mov rax,[rsi+30]
7FFA4E071CE4 mov rcx,[rax+8]
7FFA4E071CE8 call qword ptr [rax+18]
7FFA4E071CEB lea rcx,[rbp+8]
7FFA4E071CEF mov rdx,rax
7FFA4E071CF2 call CORINFO_HELP_ASSIGN_REF
7FFA4E071CF7 xor ecx,ecx
7FFA4E071CF9 mov [rbp+8],rcx
7FFA4E071CFD mov rbp,[rsi+38]
7FFA4E071D01 mov rax,[rsi+30]
7FFA4E071D05 mov rcx,[rax+8]
7FFA4E071D09 call qword ptr [rax+18]
7FFA4E071D0C lea rcx,[rbp+8]
7FFA4E071D10 mov rdx,rax
7FFA4E071D13 call CORINFO_HELP_ASSIGN_REF
7FFA4E071D18 xor ecx,ecx
7FFA4E071D1A mov [rbp+8],rcx
7FFA4E071D1E mov rbp,[rsi+38]
7FFA4E071D22 mov rax,[rsi+30]
7FFA4E071D26 mov rcx,[rax+8]
7FFA4E071D2A call qword ptr [rax+18]
7FFA4E071D2D lea rcx,[rbp+8]
7FFA4E071D31 mov rdx,rax
7FFA4E071D34 call CORINFO_HELP_ASSIGN_REF
7FFA4E071D39 xor ecx,ecx
7FFA4E071D3B mov [rbp+8],rcx
7FFA4E071D3F mov rbp,[rsi+38]
7FFA4E071D43 mov rax,[rsi+30]
7FFA4E071D47 mov rcx,[rax+8]
7FFA4E071D4B call qword ptr [rax+18]
7FFA4E071D4E lea rcx,[rbp+8]
7FFA4E071D52 mov rdx,rax
7FFA4E071D55 call CORINFO_HELP_ASSIGN_REF
7FFA4E071D5A xor ecx,ecx
7FFA4E071D5C mov [rbp+8],rcx
7FFA4E071D60 mov rbp,[rsi+38]
7FFA4E071D64 mov rax,[rsi+30]
7FFA4E071D68 mov rcx,[rax+8]
7FFA4E071D6C call qword ptr [rax+18]
7FFA4E071D6F lea rcx,[rbp+8]
7FFA4E071D73 mov rdx,rax
7FFA4E071D76 call CORINFO_HELP_ASSIGN_REF
7FFA4E071D7B xor ecx,ecx
7FFA4E071D7D mov [rbp+8],rcx
7FFA4E071D81 mov rbp,[rsi+38]
7FFA4E071D85 mov rax,[rsi+30]
7FFA4E071D89 mov rcx,[rax+8]
7FFA4E071D8D call qword ptr [rax+18]
7FFA4E071D90 lea rcx,[rbp+8]
7FFA4E071D94 mov rdx,rax
7FFA4E071D97 call CORINFO_HELP_ASSIGN_REF
7FFA4E071D9C xor ecx,ecx
7FFA4E071D9E mov [rbp+8],rcx
7FFA4E071DA2 mov rbp,[rsi+38]
7FFA4E071DA6 mov rax,[rsi+30]
7FFA4E071DAA mov rcx,[rax+8]
7FFA4E071DAE call qword ptr [rax+18]
7FFA4E071DB1 lea rcx,[rbp+8]
7FFA4E071DB5 mov rdx,rax
7FFA4E071DB8 call CORINFO_HELP_ASSIGN_REF
7FFA4E071DBD xor ecx,ecx
7FFA4E071DBF mov [rbp+8],rcx
7FFA4E071DC3 mov rbp,[rsi+38]
7FFA4E071DC7 mov rax,[rsi+30]
7FFA4E071DCB mov rcx,[rax+8]
7FFA4E071DCF call qword ptr [rax+18]
7FFA4E071DD2 lea rcx,[rbp+8]
7FFA4E071DD6 mov rdx,rax
7FFA4E071DD9 call CORINFO_HELP_ASSIGN_REF
7FFA4E071DDE xor ecx,ecx
7FFA4E071DE0 mov [rbp+8],rcx
7FFA4E071DE4 mov rbp,[rsi+38]
7FFA4E071DE8 mov rax,[rsi+30]
7FFA4E071DEC mov rcx,[rax+8]
7FFA4E071DF0 call qword ptr [rax+18]
7FFA4E071DF3 lea rcx,[rbp+8]
7FFA4E071DF7 mov rdx,rax
7FFA4E071DFA call CORINFO_HELP_ASSIGN_REF
7FFA4E071DFF xor ecx,ecx
7FFA4E071E01 mov [rbp+8],rcx
7FFA4E071E05 mov rbp,[rsi+38]
7FFA4E071E09 mov rax,[rsi+30]
7FFA4E071E0D mov rcx,[rax+8]
7FFA4E071E11 call qword ptr [rax+18]
7FFA4E071E14 lea rcx,[rbp+8]
7FFA4E071E18 mov rdx,rax
7FFA4E071E1B call CORINFO_HELP_ASSIGN_REF
7FFA4E071E20 xor ecx,ecx
7FFA4E071E22 mov [rbp+8],rcx
7FFA4E071E26 mov rbp,[rsi+38]
7FFA4E071E2A mov rax,[rsi+30]
7FFA4E071E2E mov rcx,[rax+8]
7FFA4E071E32 call qword ptr [rax+18]
7FFA4E071E35 lea rcx,[rbp+8]
7FFA4E071E39 mov rdx,rax
7FFA4E071E3C call CORINFO_HELP_ASSIGN_REF
7FFA4E071E41 xor ecx,ecx
7FFA4E071E43 mov [rbp+8],rcx
7FFA4E071E47 mov rbp,[rsi+38]
7FFA4E071E4B mov rax,[rsi+30]
7FFA4E071E4F mov rcx,[rax+8]
7FFA4E071E53 call qword ptr [rax+18]
7FFA4E071E56 lea rcx,[rbp+8]
7FFA4E071E5A mov rdx,rax
7FFA4E071E5D call CORINFO_HELP_ASSIGN_REF
7FFA4E071E62 xor ecx,ecx
7FFA4E071E64 mov [rbp+8],rcx
7FFA4E071E68 mov rbp,[rsi+38]
7FFA4E071E6C mov rax,[rsi+30]
7FFA4E071E70 mov rcx,[rax+8]
7FFA4E071E74 call qword ptr [rax+18]
7FFA4E071E77 lea rcx,[rbp+8]
7FFA4E071E7B mov rdx,rax
7FFA4E071E7E call CORINFO_HELP_ASSIGN_REF
7FFA4E071E83 xor eax,eax
7FFA4E071E85 mov [rbp+8],rax
7FFA4E071E89 inc rbx
7FFA4E071E8C cmp rbx,rdi
7FFA4E071E8F jl near ptr M00_L00
M00_L01:
7FFA4E071E95 add rsp,28
7FFA4E071E99 pop rbx
7FFA4E071E9A pop rbp
7FFA4E071E9B pop rsi
7FFA4E071E9C pop rdi
7FFA4E071E9D ret
; Total bytes of code 574 ; Benchmarks.WithGlobalSetup.DefaultClass()
7FFA4E074400 xor eax,eax
7FFA4E074402 ret
; Total bytes of code 3 .NET 6.0.16 (6.0.1623.17311), X64 RyuJIT SSE3; BenchmarkDotNet.Autogenerated.Runnable_1.WorkloadActionUnroll(Int64)
7FFA4E071C60 push rdi
7FFA4E071C61 push rsi
7FFA4E071C62 push rbp
7FFA4E071C63 push rbx
7FFA4E071C64 sub rsp,28
7FFA4E071C68 mov rsi,rcx
7FFA4E071C6B mov rdi,rdx
7FFA4E071C6E xor ebx,ebx
7FFA4E071C70 test rdi,rdi
7FFA4E071C73 jle near ptr M00_L01
M00_L00:
7FFA4E071C79 mov rbp,[rsi+38]
7FFA4E071C7D mov rax,[rsi+30]
7FFA4E071C81 mov rcx,[rax+8]
7FFA4E071C85 call qword ptr [rax+18]
7FFA4E071C88 lea rcx,[rbp+8]
7FFA4E071C8C mov rdx,rax
7FFA4E071C8F call CORINFO_HELP_ASSIGN_REF
7FFA4E071C94 xor ecx,ecx
7FFA4E071C96 mov [rbp+8],rcx
7FFA4E071C9A mov rbp,[rsi+38]
7FFA4E071C9E mov rax,[rsi+30]
7FFA4E071CA2 mov rcx,[rax+8]
7FFA4E071CA6 call qword ptr [rax+18]
7FFA4E071CA9 lea rcx,[rbp+8]
7FFA4E071CAD mov rdx,rax
7FFA4E071CB0 call CORINFO_HELP_ASSIGN_REF
7FFA4E071CB5 xor ecx,ecx
7FFA4E071CB7 mov [rbp+8],rcx
7FFA4E071CBB mov rbp,[rsi+38]
7FFA4E071CBF mov rax,[rsi+30]
7FFA4E071CC3 mov rcx,[rax+8]
7FFA4E071CC7 call qword ptr [rax+18]
7FFA4E071CCA lea rcx,[rbp+8]
7FFA4E071CCE mov rdx,rax
7FFA4E071CD1 call CORINFO_HELP_ASSIGN_REF
7FFA4E071CD6 xor ecx,ecx
7FFA4E071CD8 mov [rbp+8],rcx
7FFA4E071CDC mov rbp,[rsi+38]
7FFA4E071CE0 mov rax,[rsi+30]
7FFA4E071CE4 mov rcx,[rax+8]
7FFA4E071CE8 call qword ptr [rax+18]
7FFA4E071CEB lea rcx,[rbp+8]
7FFA4E071CEF mov rdx,rax
7FFA4E071CF2 call CORINFO_HELP_ASSIGN_REF
7FFA4E071CF7 xor ecx,ecx
7FFA4E071CF9 mov [rbp+8],rcx
7FFA4E071CFD mov rbp,[rsi+38]
7FFA4E071D01 mov rax,[rsi+30]
7FFA4E071D05 mov rcx,[rax+8]
7FFA4E071D09 call qword ptr [rax+18]
7FFA4E071D0C lea rcx,[rbp+8]
7FFA4E071D10 mov rdx,rax
7FFA4E071D13 call CORINFO_HELP_ASSIGN_REF
7FFA4E071D18 xor ecx,ecx
7FFA4E071D1A mov [rbp+8],rcx
7FFA4E071D1E mov rbp,[rsi+38]
7FFA4E071D22 mov rax,[rsi+30]
7FFA4E071D26 mov rcx,[rax+8]
7FFA4E071D2A call qword ptr [rax+18]
7FFA4E071D2D lea rcx,[rbp+8]
7FFA4E071D31 mov rdx,rax
7FFA4E071D34 call CORINFO_HELP_ASSIGN_REF
7FFA4E071D39 xor ecx,ecx
7FFA4E071D3B mov [rbp+8],rcx
7FFA4E071D3F mov rbp,[rsi+38]
7FFA4E071D43 mov rax,[rsi+30]
7FFA4E071D47 mov rcx,[rax+8]
7FFA4E071D4B call qword ptr [rax+18]
7FFA4E071D4E lea rcx,[rbp+8]
7FFA4E071D52 mov rdx,rax
7FFA4E071D55 call CORINFO_HELP_ASSIGN_REF
7FFA4E071D5A xor ecx,ecx
7FFA4E071D5C mov [rbp+8],rcx
7FFA4E071D60 mov rbp,[rsi+38]
7FFA4E071D64 mov rax,[rsi+30]
7FFA4E071D68 mov rcx,[rax+8]
7FFA4E071D6C call qword ptr [rax+18]
7FFA4E071D6F lea rcx,[rbp+8]
7FFA4E071D73 mov rdx,rax
7FFA4E071D76 call CORINFO_HELP_ASSIGN_REF
7FFA4E071D7B xor ecx,ecx
7FFA4E071D7D mov [rbp+8],rcx
7FFA4E071D81 mov rbp,[rsi+38]
7FFA4E071D85 mov rax,[rsi+30]
7FFA4E071D89 mov rcx,[rax+8]
7FFA4E071D8D call qword ptr [rax+18]
7FFA4E071D90 lea rcx,[rbp+8]
7FFA4E071D94 mov rdx,rax
7FFA4E071D97 call CORINFO_HELP_ASSIGN_REF
7FFA4E071D9C xor ecx,ecx
7FFA4E071D9E mov [rbp+8],rcx
7FFA4E071DA2 mov rbp,[rsi+38]
7FFA4E071DA6 mov rax,[rsi+30]
7FFA4E071DAA mov rcx,[rax+8]
7FFA4E071DAE call qword ptr [rax+18]
7FFA4E071DB1 lea rcx,[rbp+8]
7FFA4E071DB5 mov rdx,rax
7FFA4E071DB8 call CORINFO_HELP_ASSIGN_REF
7FFA4E071DBD xor ecx,ecx
7FFA4E071DBF mov [rbp+8],rcx
7FFA4E071DC3 mov rbp,[rsi+38]
7FFA4E071DC7 mov rax,[rsi+30]
7FFA4E071DCB mov rcx,[rax+8]
7FFA4E071DCF call qword ptr [rax+18]
7FFA4E071DD2 lea rcx,[rbp+8]
7FFA4E071DD6 mov rdx,rax
7FFA4E071DD9 call CORINFO_HELP_ASSIGN_REF
7FFA4E071DDE xor ecx,ecx
7FFA4E071DE0 mov [rbp+8],rcx
7FFA4E071DE4 mov rbp,[rsi+38]
7FFA4E071DE8 mov rax,[rsi+30]
7FFA4E071DEC mov rcx,[rax+8]
7FFA4E071DF0 call qword ptr [rax+18]
7FFA4E071DF3 lea rcx,[rbp+8]
7FFA4E071DF7 mov rdx,rax
7FFA4E071DFA call CORINFO_HELP_ASSIGN_REF
7FFA4E071DFF xor ecx,ecx
7FFA4E071E01 mov [rbp+8],rcx
7FFA4E071E05 mov rbp,[rsi+38]
7FFA4E071E09 mov rax,[rsi+30]
7FFA4E071E0D mov rcx,[rax+8]
7FFA4E071E11 call qword ptr [rax+18]
7FFA4E071E14 lea rcx,[rbp+8]
7FFA4E071E18 mov rdx,rax
7FFA4E071E1B call CORINFO_HELP_ASSIGN_REF
7FFA4E071E20 xor ecx,ecx
7FFA4E071E22 mov [rbp+8],rcx
7FFA4E071E26 mov rbp,[rsi+38]
7FFA4E071E2A mov rax,[rsi+30]
7FFA4E071E2E mov rcx,[rax+8]
7FFA4E071E32 call qword ptr [rax+18]
7FFA4E071E35 lea rcx,[rbp+8]
7FFA4E071E39 mov rdx,rax
7FFA4E071E3C call CORINFO_HELP_ASSIGN_REF
7FFA4E071E41 xor ecx,ecx
7FFA4E071E43 mov [rbp+8],rcx
7FFA4E071E47 mov rbp,[rsi+38]
7FFA4E071E4B mov rax,[rsi+30]
7FFA4E071E4F mov rcx,[rax+8]
7FFA4E071E53 call qword ptr [rax+18]
7FFA4E071E56 lea rcx,[rbp+8]
7FFA4E071E5A mov rdx,rax
7FFA4E071E5D call CORINFO_HELP_ASSIGN_REF
7FFA4E071E62 xor ecx,ecx
7FFA4E071E64 mov [rbp+8],rcx
7FFA4E071E68 mov rbp,[rsi+38]
7FFA4E071E6C mov rax,[rsi+30]
7FFA4E071E70 mov rcx,[rax+8]
7FFA4E071E74 call qword ptr [rax+18]
7FFA4E071E77 lea rcx,[rbp+8]
7FFA4E071E7B mov rdx,rax
7FFA4E071E7E call CORINFO_HELP_ASSIGN_REF
7FFA4E071E83 xor eax,eax
7FFA4E071E85 mov [rbp+8],rax
7FFA4E071E89 inc rbx
7FFA4E071E8C cmp rbx,rdi
7FFA4E071E8F jl near ptr M00_L00
M00_L01:
7FFA4E071E95 add rsp,28
7FFA4E071E99 pop rbx
7FFA4E071E9A pop rbp
7FFA4E071E9B pop rsi
7FFA4E071E9C pop rdi
7FFA4E071E9D ret
; Total bytes of code 574 ; Benchmarks.WithoutGlobalSetup.DefaultClass()
7FFA4E074400 xor eax,eax
7FFA4E074402 ret
; Total bytes of code 3 |
I found the issue and sent a fix. #2374 |
This looks like a runtime issue to me, but @AndreyAkinshin asked me to open an issue here for it.
I observed simply adding a
[GlobalSetup]
to a benchmark class causesdefault(object)
to take more time than without it. I only observed this in net7.0 and net8.0, no other runtime, and not with default primitives.OS is Windows 10 x64
CPU is AMD Phenom II X6 1055T @ 2.8 GHz
The text was updated successfully, but these errors were encountered: