Remove extraneous clones in TypeNamed and ViolationChild #296
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.
Issue #, if available:
None.
Description of changes:
I changed the implementation of
ViolationChild
so that it's not unnecessarily creating clones ofIonValue
s.Also changed the implementation of
TypeNamed
so that it doesn't create a new struct and clone the entire type definition every time it validates a value.My informal performance testing shows a significant improvement. I created a representative schema:
And tested it using a set of values that were all valid for the type
abc
and another set that were all invalid. These results were measured by running warmups until the time was stable, using an "autorange" approach to determine the number of invocations in each sample, and then collecting and averaging the ops/s for 30 samples.Related PRs in ion-schema, ion-schema-tests, ion-schema-schemas:
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.