Improve performance of membership checks in replace_at
and _initialize_color_dictionary
using sets
#1590
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 PR optimizes membership checks by replacing lists with sets in two key functions:
replace_at
function:if index % index_period in index_values:
check has been converted to aset
for faster membership testing. This change improves performance whenindex_values
contains multiple elements, as thein
operation on aset
has an average time complexity of O(1), compared to O(n) for a list._initialize_color_dictionary
function:keys
from the dictionary were previously converted to a list for membership testing. This has been replaced by using aset
, significantly improving performance, especially when the dictionary is large. Thein
operation on theset
reduces the time complexity from O(n) to O(1).Both changes are aimed at enhancing the performance of membership tests without altering the logic or behavior of the existing code. These improvements are particularly beneficial in cases where the collections being checked contain many elements.
Let me know if you'd like to add or adjust anything!