[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-i18n-dev
Subject: <i18n dev> Integrated: 8304976: Optimize DateTimeFormatterBuilder.ZoneTextPrinterParser.getTree()
From: Sergey Tsypanov <stsypanov () openjdk ! org>
Date: 2023-03-29 18:35:36
Message-ID: ZDiUI4CAFOVD-ByWKVbj0rKXJvylZcyqg55jZgV08zs=.277d17ff-3763-4ac2-b7f9-c080ed284045 () github ! com
[Download RAW message or body]
On Fri, 17 Feb 2023 09:50:16 GMT, Sergey Tsypanov <stsypanov@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);
> }
> }
This pull request has now been integrated.
Changeset: 438c969b
Author: Sergey Tsypanov <stsypanov@openjdk.org>
Committer: Naoto Sato <naoto@openjdk.org>
URL: https://git.openjdk.org/jdk/commit/438c969b7b07eeef0158b089e5a168849e04bf56
Stats: 62 lines in 2 files changed: 57 ins; 1 del; 4 mod
8304976: Optimize DateTimeFormatterBuilder.ZoneTextPrinterParser.getTree()
Reviewed-by: naoto
-------------
PR: https://git.openjdk.org/jdk/pull/12612
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic