<i18n dev> RFR: 8304976: Optimize DateTimeFormatterBuilder.ZoneTextPrinterParser.getTree() [v2]
Naoto Sato
naoto at openjdk.org
Wed Mar 29 16:24:33 UTC 2023
On Wed, 29 Mar 2023 08:16:32 GMT, Sergey Tsypanov <stsypanov at 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`
>> 
>>
>> 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
More information about the i18n-dev
mailing list