simplifications and out-of-memory fix in RRuleIterSet #120
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.
...and another one 🔢
Did some simplifications to the RRuleSetIter, mainly trying to get rid of the HashMap queue thing.
Following to this change it seemed possible to stop appending exrules dates to the exdates btree indefinitely (which eventually may cause out of memory on the system). And instead keeping track of the last value of each iterator. A change made possible since the date given to the
is_date_excluded
should now always be greater (or the same) as the last call to the function. Hence there is no need to track previously yielded exrule dates.These changes seems to improve the overall iteration performance of the RRuleSetIter. I have created some benchmarks (not in PR) and the iteration time is cut down by 4-70 % depending on the specific rruleset tested.