intlogger/With: reduce memory allocation #150
Open
+2
−1
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.
For repeated calls to
Logger.With(...)
applications might set the same set of keys multiple times, in those circumstances the size of the result map is the most correct way to determine the true number of resulting key-value pairs for the logger.This ever so slightly reduces memory usage in the case that multiple
With
calls set the same keys, by reducing over-allocation.Example:
For reviewers: I kept (what appeared to be) the allocation strategy around
MissingKey
andextra
, so callers toWith
will still perform a reallocation if they pass an odd number of parameters. They're not allocated for in the previous code (len(l.implied)+len(args)
, ), and aren't allocated for in the new code (2*len(result)
).