Made some small optimizations to Dictionaries and Enumerables#724
Merged
michelebastione merged 5 commits intomini-software:masterfrom Feb 12, 2025
Merged
Made some small optimizations to Dictionaries and Enumerables#724michelebastione merged 5 commits intomini-software:masterfrom
michelebastione merged 5 commits intomini-software:masterfrom
Conversation
Fetching a value from a Dictionary after checking if it contains the required key means going through its hashmap twice. It's not a very significant overhead at all but it's completely unnecessary.
Materialization done to avoid possible evaluations of the same IEnumerables multiple times in a row
The IEnumerable Count() method usually goes through a full enumeration of all the elements while the ICollection Count property gets the value from a field.
The field _enumerator, being defined as an IEnumerator, does not directly suppoort IDisposable, however most of its implementations also inherit from IEnumerator<T>, which does. This could lead to potential memory leak problems if not handled with a Dispose call.
shps951023
approved these changes
Feb 12, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Hello, I was going through the repository and noticed some potential improvements so I made the following edits:
ContainsKeycalls toTryGetValueto avoid going through a dictionary's hashmap twiceEnumerablesto make sure not to evaluate them multiple times in a rowIEnumerable'sCount()method toICollection'sCountproperty to avoid unnecessary enumeration of the collectionIDisposabletoIEnumeratorto prevent possible memory leak scenarios of implementations not getting garbage collected correctlyI hope it doesn't look presumptuous of me to propose these many modifications at once but I figured at least some of them could be useful. I ran all the tests multiple times and everything seems to be in order. What do you think?