Avoid expensive set construction in Config constructor #1289
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.
Goal
Initializing
Configuration
was taking more time than it needed to due to the construction of some unnecessary sets. ThetoSet()
implementation in Kotlin seems like it can be particularly slow in some circumstances, as it constructs aLinkedHashSet
. This is unnecessary for the purposes ofConfiguration
.Changeset
redactedKeys
plugins
with aHashSet
rather than aLinkedHashSet
enabledBreadcrumbTypes
tonull
rather than constructing a set - this has the same behaviour as setting all the valuesWithout these optimizations
Configuration
took ~38ms to initialize, whereas with them it took ~9ms. It's worth noting that this only seems to be on a cold start, suggesting that there is some one-off work required when the JVM is initialized. Therefore the differences don't show up in the automated benchmarks and have been manually profiled instead.Testing
Relied on existing test coverage.