Change the DateTimeFormatterBuilder::FIELD_MAP type from Map to Array

Claes Redestad claes.redestad at oracle.com
Mon Sep 29 10:22:20 UTC 2025


As this is the only use of FIELD_MAP then rewriting the lookup+if-else into a single switch inline could be an appropriate simplification.

/Claes

> 28 sep. 2025 kl. 17:14 skrev Chen Liang <liangchenblue at gmail.com>:
> 
> Hi wenshao, I think this proposed minor cleanup is reasonable.
> Looking at the overall context, I think that piece of code needs a more general rewrite to ensure better performance.
> 
> On Sat, Sep 27, 2025 at 7:24 PM wenshao <shaojin.wensj at alibaba-inc.com> wrote:
> The DateTimeFormatterBuilder::FIELD_MAP is of type Map<Character, TemporalField>, with key values in the range 'A-Z' and 'a-z'.
> 
> We can change the type of FIELD_MAP to an array of length 128 and then use char as an index to access the array.
> 
> This will reduce the memory usage of DateTimeFormatterBuilder::FIELD_MAP and improve performance slightly.
> 
> By analyzing the jmap dump memory, we can see that the memory size used by DateTimeFormatterBuilder::FIELD_MAP has dropped from 1.12kb to 528b, the number of objects has decreased and the memory has become more flat. as shown below:
> 
> before:
> after:
> 
> In order to make it easier for reviewers to see my ideas, I submitted a draft Pull Request ( https://github.com/openjdk/jdk/pull/26634 ). Please give me feedback.
> 



More information about the core-libs-dev mailing list