-
-
Notifications
You must be signed in to change notification settings - Fork 7.4k
Open
Labels
Description
Is your feature request related to a problem? Please describe.
The current modelEnum.mustache templates implementation for fromValue for the JVM has an O(n) worst case.
Describe the solution you'd like
I want the fromValue to use a map to retrieve the enum value in constant time.
Describe alternatives you've considered
Possible alternatives are
- Ignore this request. The implementation and possible impacts are too troublesome for the project.
- Use hashmaps/treemaps for the lookup. I have opened a PR with benchmarks and the implementation targeting Java -> [JAVA] [PERF] improve java enum fromValue generation #22995
Additional context
I have run jmh benchmnarks, which yield the following results (MacOS ARM 26;JMH version: 1.37;JDK 11.0.22, OpenJDK 64-Bit Server VM, 11.0.22+7-LTS)
Benchmark (inputSize) Mode Cnt Score Error Units
EnumLookupJmhBenchmark.hashMapLookupCaseInsensitive 50000 thrpt 5 25144177.892 ± 820137.701 ops/s
EnumLookupJmhBenchmark.hashMapLookupWithOptional 50000 thrpt 5 99265713.896 ± 2460266.752 ops/s
EnumLookupJmhBenchmark.hashMapLookupWithoutOptional 50000 thrpt 5 99777930.270 ± 2376641.407 ops/s
EnumLookupJmhBenchmark.linearLookup 50000 thrpt 5 24858482.938 ± 367926.448 ops/s
EnumLookupJmhBenchmark.linearLookupCaseInsensitive 50000 thrpt 5 12758767.698 ± 667129.809 ops/s
EnumLookupJmhBenchmark.treeMapLookupCaseInsensitiveWithOptional 50000 thrpt 5 14069454.341 ± 331263.365 ops/s
The benchmarks can be run by anyone, the command is provided.
Reactions are currently unavailable