On Wed, 29 Mar 2023 08:16:32 GMT, Sergey Tsypanov <stsypa...@openjdk.org> wrote:

>> 1) When `DateTimeFormatter` is reused we don't need to copy 
>> `availableZoneIds` and allocate `nonRegionIds` as PrefixTree can be taken 
>> from cache. In the related benchmark allocation of `HashSet` takes ~93% of 
>> all time, so avoiding it should bring some improvement for cases when we 
>> reuse `DateTimeFormatter` to parse a string into `ZoneDateTime`
>> ![image](https://user-images.githubusercontent.com/10835776/219609028-af48eae4-d326-4719-8366-c215baa85835.png)
>> 
>> 2) `DateTimeFormatter` is mostly used with one locale, so `cachedTree` and 
>> `cachedTreeCI` can have predefined size.
>> 
>> 
>> @State(Scope.Thread)
>> @BenchmarkMode(Mode.AverageTime)
>> @OutputTimeUnit(TimeUnit.NANOSECONDS)
>> public class DateTimeFormatterBenchmark {
>> 
>>     private static final DateTimeFormatter df = new 
>> DateTimeFormatterBuilder().appendPattern("yyyy:MM:dd:HH:mm:v").toFormatter();
>>     private static final String TEXT = "2015:03:10:12:13:ECT";
>> 
>>     @Setup
>>     public void setUp() {
>>         ZonedDateTime.parse(TEXT, df);
>>     }
>> 
>>     @Benchmark
>>     public ZonedDateTime parse() {
>>         return ZonedDateTime.parse(TEXT, df);
>>     }
>> }
>
> Sergey Tsypanov has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   8304745: Fix package

LGTM

-------------

Marked as reviewed by naoto (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/12612#pullrequestreview-1363506079

Reply via email to