RFR: 8260053: Optimize Tokens' use of Names
Guoxiong Li
github.com+13688759+lgxbslgx at openjdk.java.net
Thu Jan 21 11:23:49 UTC 2021
On Wed, 20 Jan 2021 17:07:26 GMT, Guoxiong Li <github.com+13688759+lgxbslgx at openjdk.org> wrote:
> Hi all,
>
> This patch initializes the names about `TokenKind` at the beginning of the constructor of the class `Names`. As a result, the `Tokens.maxKey` and the length of the array `Tokens.key` become small. By using this patch, the length of the array `Tokens.key` is changed from 4280 to 383.
>
> The original discussion is at [compiler-dev](https://mail.openjdk.java.net/pipermail/compiler-dev/2021-January/016126.html).
>
> Thank you for taking the time to review.
>
> Best Regards.
Thanks for your comments.
My patch mainly focused on using less memory without causing performance degradation. But I lacked consideration about the architecture which is also important. I agree with you that the utility classes should not dependent on other classes.
Using `Map<String, TokenKind>` instead of `TokenKind[]` looks like a good idea. It reduces the memory and doesn't revise the class `Names`. But the more important aspect is that it can't cause performance regression. I will do some benchmark test by using `Map<String, TokenKind>` locally to observe the performance and will share the result with you.
-------------
PR: https://git.openjdk.java.net/jdk/pull/2169
More information about the compiler-dev
mailing list