[performance] Optimize LocalDate::plusDays(1) calls. #79
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.
Fixes #78.
Local PHP script-based benchmark shows that for 10'000'000 iterations of
LocalDate::plusDays(1)
(from 2023-09-15 to 29402-10-11) takes an average of 25 seconds without this patch, and an average of 5 seconds with it. Adding the patch does not change the results if the input argument ofplusDays()
is something else than 1 (or only a non-noticeable amount).Benchmark script
I understand this is quite a specific patch, mostly related to our own use case in our code base, but I still think it might benefit users of this library, because looping from day to day seems like quite a common use case (it's done even within the library, in
LocalDateRange::getIterator()
andLocalDate::plusWeekdays()
).We thought of adding a
-1
use case too, but it's way more complicated to implement, and I'd guess it's not as useful/impactful.Credit goes to @BastienClement.