-
Notifications
You must be signed in to change notification settings - Fork 528
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
[profiled-aot] update dotnet.aotprofile
for .NET 8
#7908
Conversation
We've not done this yet in .NET 8, and we've noticed some potential regressions in startup time. A `dotnet new android` app, an average of 10 runs on a Pixel 5: Before: Average(ms): 192.3 Std Err(ms): 2.00582485111072 Std Dev(ms): 6.34297511687799 After: Average(ms): 161.4 Std Err(ms): 2.21208800307161 Std Dev(ms): 6.99523647443983 Saves ~30ms in startup by just updating the profile.
void System.Reflection.Emit.DynamicMethod:CreateDynMethod () | ||
void System.Reflection.Emit.DynamicMethod:Init (string,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type,System.Reflection.Module,bool,bool) | ||
void System.Reflection.Emit.ILGenerator:.ctor (System.Reflection.Module,System.Reflection.Emit.ITokenGenerator,int) | ||
void System.Reflection.Emit.ILGenerator:Emit (System.Reflection.Emit.OpCode,int) | ||
void System.Reflection.Emit.ILGenerator:Emit (System.Reflection.Emit.OpCode,System.Reflection.ConstructorInfo) | ||
void System.Reflection.Emit.ILGenerator:Emit (System.Reflection.Emit.OpCode,System.Reflection.FieldInfo) | ||
void System.Reflection.Emit.ILGenerator:Emit (System.Reflection.Emit.OpCode,System.Reflection.MethodInfo) | ||
void System.Reflection.Emit.ILGenerator:Emit (System.Reflection.Emit.OpCode,System.Type) | ||
void System.Reflection.Emit.ILGenerator:Emit (System.Reflection.Emit.OpCode) | ||
void System.Reflection.Emit.ILGenerator:emit_int (int) | ||
void System.Reflection.Emit.ILGenerator:label_fixup (System.Reflection.MethodBase) | ||
void System.Reflection.Emit.ILGenerator:ll_emit (System.Reflection.Emit.OpCode) | ||
void System.Reflection.Emit.ILGenerator:make_room (int) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wait something is using System.Reflection.Emit now?!? Need to investigate what...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is coming from System.Reflection.ConstructorInfo.Invoke()
.
Will investigate if we can use the feature flag: dotnet/runtime#80246
Context? dotnet/runtime#72717 We've not done this yet in .NET 8, and we've noticed some potential regressions in startup time, possibly because `ConstructorInfo.Invoke()` now uses System.Reflection.Emit. Update `dotnet.aotprofile` for .NET 8. A `dotnet new android` app, an average of 10 runs on a Pixel 5: * Before: Average(ms): 192.3 Std Err(ms): 2.00582485111072 Std Dev(ms): 6.34297511687799 * After: Average(ms): 161.4 Std Err(ms): 2.21208800307161 Std Dev(ms): 6.99523647443983 Saves ~30ms in startup by just updating the profile.
* main: [build] remove .NET 6 support (dotnet#7900) [profiled-aot] update `dotnet.aotprofile` for .NET 8 (dotnet#7908) [tests] Add backup ssl sites in case of 429 response. (dotnet#7909) $(AndroidPackVersionSuffix)=preview.4; net8 is 34.0.0-preview.4 (dotnet#7912)
* main: (94 commits) [ci] Remove remaining Classic test jobs. (dotnet#7924) Add Nightly Tests for Humanizer [readme] Add aka.ms links for d17.5. (dotnet#7935) [tests] Remove `net472` multitargeting (dotnet#7932) [monodroid] Fix `ld` build error on Nightly Builds. (dotnet#7925) Bump to xamarin/Java.Interop/main@0355acf (dotnet#7931) [tests] Use msftconnecttest.com in QuoteInvalidQuoteUrlsShouldWork (dotnet#7919) [ci] Don't set demands for megapipeline (dotnet#7929) [Mono.Android] Bind API-UpsideDownCake Developer Preview 1 (dotnet#7796) Bump to dotnet/installer@d109cba3ff 8.0.100-preview.4.23176.5 (dotnet#7921) [Xamarin.Android.Build.Tasks] Fix Android Version Code for Release builds (dotnet#7795) Bump to dotnet/installer@27d6769dfb 8.0.100-preview.4.23172.16 (dotnet#7910) [Xamarin.Android.Build.Tasks] Fix native code generation when marshal methods are disabled (dotnet#7899) [ci] Optimize 'APK's .NET' test job overhead. (dotnet#7904) [Mono.Android] delay JNINativeWrapper.get_runtime_types() (dotnet#7913) Bump external/Java.Interop from `73ebad2` to `53bfb4a` (dotnet#7914) [build] remove .NET 6 support (dotnet#7900) [profiled-aot] update `dotnet.aotprofile` for .NET 8 (dotnet#7908) [tests] Add backup ssl sites in case of 429 response. (dotnet#7909) $(AndroidPackVersionSuffix)=preview.4; net8 is 34.0.0-preview.4 (dotnet#7912) ...
We've not done this yet in .NET 8, and we've noticed some potential regressions in startup time.
A
dotnet new android
app, an average of 10 runs on a Pixel 5:Saves ~30ms in startup by just updating the profile.