[threeten-dev] Minor performance tuning for LocalDate.of(int, int, int)

Xueming Shen xueming.shen at oracle.com
Thu Mar 7 11:22:38 PST 2013


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