Optimize DecodeMapToType #211
Merged
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.
IEquatable<T>onKeyto avoid boxing the value when using it in a dictionary. This should save one allocation per decoded field.Using the benchmark code from #210, it's only 1% faster but it allocates ~20% less which will put less pressure on the GC.
214.0.0.0 with GeoIP2-City-Test.mmdb
23.56.162.100 with GeoIP2-City.mmdb
I've also studied the feasibility to avoid boxing fields in the object[] parameters. It is extremely complex to do that with immutable types. The commit that implements this in System.Text.Json is 7K LOC long.