[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