[Java.Interop] use StringComparer.Ordinal for Dictionary #550
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.
Context: https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices-strings#ordinal-string-operations
When profiling startup for a Xamarin.Forms app, I noticed some heavy
calls to
Dictionary
:Quite a few of these are coming from Java.Interop itself, and I
noticed we were using the default constructor for
Dictionary
. Thismeans we are using a culture-aware string comparison for every Java
member we lookup.
I could see a small difference in a Release build of the Xamarin.Forms
integration project in xamarin-android:
I would guess this saves ~2ms to startup?
I also toyed with changing the
capacity
value to 0, but that seemedto make things worse. I don't think there is a way for us to "guess"
the default capacity for these dictionaries, so let's let the BCL do
that.