On Tue, 9 Dec 2025 10:02:36 GMT, Shaojin Wen <[email protected]> wrote:
>> This PR optimizes the parsing performance of DateTimeFormatter by replacing >> HashMap with EnumMap in scenarios where the keys are exclusively ChronoField >> enum values. >> >> When parsing date/time strings, DateTimeFormatter creates HashMaps to store >> intermediate parsed values. HashMap has more overhead for operations >> compared to specialized map implementations. >> >> Since ChronoField is an enum and all keys in these maps are ChronoField >> instances, we can use EnumMap instead, which provides better performance for >> enum keys due to its optimized internal structure. >> >> Parsing scenarios show improvements from 12% to 95% > > Shaojin Wen has updated the pull request incrementally with one additional > commit since the last revision: > > remove redundant checkField I just noted that custom TemporalField implementations must be able to put any TemporalField they like into this map: https://github.com/openjdk/jdk/blob/2d0928406027a848cf2d2d0574024970b8fb535c/src/java.base/share/classes/java/time/temporal/TemporalField.java#L364-L379 Roger's model will fail if a non-TemporalField puts into this map. This PR's model is safe because all `TemporalField` here will be `ChronoField` which won't try to do dangerous stuff to the map. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28471#issuecomment-3677909248
