[threeten-dev] Minor performance tuning for LocalDate.of(int, int, int)
Stephen Colebourne
scolebourne at joda.org
Thu Mar 7 11:42:06 PST 2013
Looks good to push
Stephen
On 7 March 2013 19:22, Xueming Shen <xueming.shen at oracle.com> wrote:
> Updated as suggested.
>
> http://cr.openjdk.java.net/~sherman/jdk8_threeten/ldPerm
>
> -Sherman
>
>
> On 03/07/2013 02:20 AM, Stephen Colebourne wrote:
>>
>> The patch is fine. I think I would have created a new private method
>> create(int,int,int) that took in y/m/d that have been validated:
>>
>> public static LocalDate of(int year, Month month, int dayOfMonth) {
>> YEAR.checkValidValue(year);
>> Objects.requireNonNull(month, "month");
>> DAY_OF_MONTH.checkValidValue(dayOfMonth);
>> return create(year, month.getValue(), dayOfMonth);
>> }
>>
>> public static LocalDate of(int year, int month, int dayOfMonth) {
>> YEAR.checkValidValue(year);
>> MONTH_OF_YEAR.checkValidValue(month);
>> DAY_OF_MONTH.checkValidValue(dayOfMonth);
>> return create(year,month,day)
>> }
>>
>> Mainly to avoid duplicated code. I suspect its smaller bytecode size
>> and better to hotspot.
>>
>> You're free to push existing patch or amended one.
>> Stephen
>>
>>
>> On 6 March 2013 23:46, Xueming Shen<xueming.shen at oracle.com> wrote:
>>>
>>> (1) LocalDate.of(int, int, int)
>>> appears to create a use-and-throw "Month" object for validation
>>> purse
>>> only, it can be "saved" with a hard-coded Month.length, something
>>> worth
>>> doing? given we are talking about "immutable" LD date type and
>>> assume
>>> new objects would be frequently "created" instead of "mutated".
>>>
>>> (2) LocalDate.ofYearDay(int, int)
>>> LocalDate.resolvePreviousValid(int, int, int)
>>> Shouldn't they just call new LocalDate(year, month, day)?
>>> all fields have been validated already, it is unnecessary to go
>>> of()->create()-> new LocalDate()
>>>
>>> Here is the proposed update, opinion?
>>>
>>> http://cr.openjdk.java.net/~sherman/jdk8_threeten/ldPerm/
>>>
>>> -Sherman
>>>
>>>
>
More information about the threeten-dev
mailing list