Avoid extra allocations in YamlScalarNode GetHashCode #648
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.
YamlScalarNode
callsCombineHashCodes(Tag, Value)
which is the only call in library that chooses the params array method. No need to allocate array for this so changed method signature to take the second object as parameter.EDIT
Then found out that the first parameter is actuall struct (
TagName Tag
) so causes boxing, is wiser to call hash code directly and now remove theCombineHashCodes
overload that is no longer needed at all.Also marked
TagName
as read-only struct. Should also useThrowHelper
here, but didn't duplicate introduction work from other PR.Benchmark Code
Uses the large YAML from issue #519 . I noticed you don't have a benchmark project currently so I'm running my local one.
Results
YamlStreamBenchmark