Optimize Date::to_calendar
#7089
Draft
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.
Currently non-Gregorian calendars implement
to_calendar
asDate<A> -> RataDie -> Date<Iso> -> RataDie -> Date<B>
. This PR cuts out the ISO conversions to make itDate<A> -> RataDie -> Date<B>
.Gregorian calendars currently use
Date<A> -> Date<Iso> -> Date<B>
, where both of these conversions are free because internally they are the same. This PR preserves this behaviour by adding aHAS_CHEAP_ISO_CONVERSION
const to theCalendar
trait, and if bothA
andB
have this, it goes through ISO instead of RD.AnyCalendar
still uses theDate<A> -> RataDie -> Date<Iso> -> RataDie -> Date<B>
path, if we wanted to optimise this we'd needHAS_CHEAP_ISO_CONVERSION
to be a method instead of aconst
.