-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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 -6%] Regression in System.Text.Encodings.Web.Tests.Perf_Encoders #48519
Comments
This seems related to #48181 |
If this is an inevitable consequence of removing the unsafe code, maybe it's acceptable., cc @GrabYourPitchforks since it's relating to unsafe code and encoding :) |
As Dan said, it is text encoding related. I wonder if we need to change the codegen label to something else. |
Been investigating potential perf optimizations recently for this code. Self-assigning since it falls under the same umbrella. Regardless, I think the PR that introduced this was good for a whole slew of reasons, including memory and footprint savings. |
Tagging subscribers to this area: @tarekgh, @eiriktsarpalis, @layomia Issue DetailsRun Information
Regressions in System.Text.Encodings.Web.Tests.Perf_Encoders
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Text.Encodings.Web.Tests.Perf_Encoders*' . PayloadsHistogramSystem.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments: UnsafeRelaxed,hello "there",16)
Baseline Jit Disasm; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments)
mov ecx,edx
cmp [ecx],ecx
call System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16()
ret
; Total bytes of code 10 ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16()
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,8
xor eax,eax
mov [ebp+0FFF0],eax
mov [ebp+0FFEC],eax
mov eax,[ecx+8]
mov edx,[ecx+0C]
test edx,edx
jne short M01_L00
xor edx,edx
xor esi,esi
jmp short M01_L01
M01_L00:
lea esi,[edx+8]
mov edx,[edx+4]
xchg edx,esi
M01_L01:
mov ecx,[ecx+10]
test ecx,ecx
jne short M01_L02
xor edi,edi
xor ebx,ebx
jmp short M01_L03
M01_L02:
lea edi,[ecx+8]
mov ebx,[ecx+4]
M01_L03:
push esi
push edx
push ebx
push edi
lea edx,[ebp+0FFEC]
push edx
push 1
lea edx,[ebp+0FFF0]
mov ecx,eax
mov eax,[eax]
mov eax,[eax+2C]
call dword ptr [eax+10]
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
; Total bytes of code 91 Compare Jit Disasm; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments)
mov ecx,edx
cmp [ecx],ecx
call System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16()
ret
; Total bytes of code 10 ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16()
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,8
xor eax,eax
mov [ebp+0FFF0],eax
mov [ebp+0FFEC],eax
mov eax,[ecx+8]
mov edx,[ecx+0C]
test edx,edx
jne short M01_L00
xor edx,edx
xor esi,esi
jmp short M01_L01
M01_L00:
lea esi,[edx+8]
mov edx,[edx+4]
xchg edx,esi
M01_L01:
mov ecx,[ecx+10]
test ecx,ecx
jne short M01_L02
xor edi,edi
xor ebx,ebx
jmp short M01_L03
M01_L02:
lea edi,[ecx+8]
mov ebx,[ecx+4]
M01_L03:
push esi
push edx
push ebx
push edi
lea edx,[ebp+0FFEC]
push edx
push 1
lea edx,[ebp+0FFF0]
mov ecx,eax
mov eax,[eax]
mov eax,[eax+2C]
call dword ptr [eax+10]
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
; Total bytes of code 91 DocsProfiling workflow for dotnet/runtime repository
|
Fixed area label. |
Run Information
Regressions in System.Text.Encodings.Web.Tests.Perf_Encoders
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments: UnsafeRelaxed,hello "there",16)
Baseline Jit Disasm
Compare Jit Disasm
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: