Reduce memory allocations in interpolation #5909
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.
When using venom I found the performance to be not as good as I hoped and used pprof to try to find some places where it can be improved. Venom seems to use
interpolate.Do
a lot, so I looked if there's anything to improve and found something that seems safe and doesn't make the code more complex:Instead of allocating new maps, the existing ones can be reused. Deleting the keys while ranging over a map is safe in Go, see the section in Effective Go:
Previous benchmark:
After the change:
I haven't measured the difference when running a Venom scenario and it's probably really small, but I thought it's worth improving anyway.
@ovh/cds