Change prefix stack to List[String] #1617
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.
This allows for sharing of the prefix stacks between Data, and removes a
boxing per prefix stack element that is no longer necessary.
My intuition is that this should reduce memory by quite a bit and thus improve performance, but I'd like to try it out on complex designs before we merge.
This should improve memory and performance for a few reasons:
construction_prefix
for eachData
is now free (it formerly copied from ArrayBuffer to List)Either
in prefix stack, removes an object allocation per stack elementWhile we do have to copy the prefix stack when we
reverse
for naming, this is a copy on naming ofData
rather than on construction. In theory, mostData
should not be named, but due to the fact that everyHasId
adds itself to theids
of its parent module, everyData
does currently get named. Once that latter issue is resolved, this will result in far fewer copies of the prefix stack. It is still better with this change because the copies can be GCed right away rather than sticking around being referred to by eachData
. We can also consider memoizing the prefix stack reversals.Contributor Checklist
docs/src
?Type of Improvement
API Impact
No impact
Backend Code Generation Impact
No impact
Desired Merge Strategy
Release Notes
Reduce memory overhead from better naming improvements in
v3.4.0
Reviewer Checklist (only modified by reviewer)
Please Merge
?