[Java.Interop.Tools.TypeNameMappings] improve ToJniNameFromAttributesForAndroid#1064
Merged
jonpryor merged 1 commit intodotnet:mainfrom Dec 8, 2022
Merged
Conversation
…sForAndroid`
Reviewing `dotnet-trace` output:
dotnet trace collect --format speedscope -- C:\src\xamarin-android\bin\Release\dotnet\dotnet.exe build -bl --no-restore bar.csproj
On a `dotnet new maui` application, I noticed:
79.40ms java.interop.tools.javacallablewrappers!Java.Interop.Tools.TypeNameMappings.JavaNativeTypeManager.ToJniNameFromAttribute
This method just appears to be called *a lot*, and so things I changed:
* Check `type.HasCustomAttributes`, `attributeType.HasInterfaces`, and
`attr.HasProperties` where appropriate.
* Unroll the `System.Linq` usage one level, and use plain `foreach`
* Create a `IsIJniNameProviderAttribute` method that checks against a
list of known attribute types as a "fast path".
* The "slow path" can continue to check for the
`IJniNameProviderAttribute` interface
Other changes:
* Delete `#region`!
* Some places were not actually correct, and were returning `null`
where they should `continue;` instead.
After these changes, I get:
51.64ms (1.2%) 0.13ns (<0.01%) java.interop.tools.javacallablewrappers!Java.Interop.Tools.TypeNameMappings.JavaNativeTypeManager.ToJniNameFromAttribute
This should save ~27ms on incremental builds of the `dotnet new maui`
project template and likely even more on larger projects.
jonpryor
pushed a commit
to dotnet/android
that referenced
this pull request
Dec 12, 2022
Changes: dotnet/java-interop@3a9f770...149d70f * dotnet/java-interop@149d70fe: [generator] Refactor enum writing to use SourceWriters (dotnet/java-interop#1063) * dotnet/java-interop@c2daa9f0: [Java.Interop.Tools.Cecil] DirectoryAssemblyResolver & File.Exists() (dotnet/java-interop#1065) * dotnet/java-interop@8ab9d33a: [Java.Interop.Tools.TypeNameMappings] improve `ToJniNameFromAttributesForAndroid` (dotnet/java-interop#1064) * dotnet/java-interop@09f8da26: [JavaCallableWrappers] avoid `string.Format()` (dotnet/java-interop#1061) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
jonathanpeppers
added a commit
that referenced
this pull request
Jan 5, 2023
…sForAndroid` (#1064) Reviewing `dotnet-trace` output: dotnet trace collect --format speedscope -- C:\src\xamarin-android\bin\Release\dotnet\dotnet.exe build -bl --no-restore bar.csproj On a `dotnet new maui` application, I noticed: 79.40ms java.interop.tools.javacallablewrappers!Java.Interop.Tools.TypeNameMappings.JavaNativeTypeManager.ToJniNameFromAttribute This method just appears to be called *a lot*, and so things I changed: * Check `type.HasCustomAttributes`, `attributeType.HasInterfaces`, and `attr.HasProperties` where appropriate. * Unroll the `System.Linq` usage one level, and use plain `foreach` * Create a `IsIJniNameProviderAttribute` method that checks against a list of known attribute types as a "fast path". * The "slow path" can continue to check for the `IJniNameProviderAttribute` interface Other changes: * Delete `#region`! After these changes, I get: 51.64ms (1.2%) 0.13ns (<0.01%) java.interop.tools.javacallablewrappers!Java.Interop.Tools.TypeNameMappings.JavaNativeTypeManager.ToJniNameFromAttribute This should save ~27ms on incremental builds of the `dotnet new maui` project template and likely even more on larger projects.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reviewing
dotnet-traceoutput:On a
dotnet new mauiapplication, I noticed:This method just appears to be called a lot, and so things I changed:
Check
type.HasCustomAttributes,attributeType.HasInterfaces, andattr.HasPropertieswhere appropriate.Unroll the
System.Linqusage one level, and use plainforeachCreate a
IsIJniNameProviderAttributemethod that checks against a list of known attribute types as a "fast path".The "slow path" can continue to check for the
IJniNameProviderAttributeinterfaceOther changes:
Delete
#region!Some places were not actually correct, and were returning
nullwhere they shouldcontinue;instead.After these changes, I get:
This should save ~27ms on incremental builds of the
dotnet new mauiproject template and likely even more on larger projects.