RFR: 8287522: StringConcatFactory: Add in prependers and mixers in batches [v4]
Mandy Chung
mchung at openjdk.java.net
Wed Jun 1 21:17:43 UTC 2022
On Wed, 1 Jun 2022 13:31:27 GMT, Claes Redestad <redestad at openjdk.org> wrote:
>> When generating `MethodHandle`-based concatenation expressions in `StringConcatFactory` we can reduce the number of classes generated at runtime by creating small batches of prependers and mixers before binding them into the root expression tree.
>>
>> Improvements on one-off tests are modest, while the improvement on bootstrapping stress tests can be substantial ([MixedStringCombinations.java](https://gist.github.com/cl4es/08fb581dece3a73e89bfa52337bc4248)):
>>
>> | Build | # classes | Runtime |
>> | ----------- | ----------------- | --------------- |
>> | Baseline | 31119 | 2.942s |
>> | Patch | 16208 | 1.958s |
>>
>> An earlier version of this patch saw a regression in the `StringConcatFactoryBootstraps` microbenchmark. After some refactoring along with the optimizations in #8881 and #8923 that is no longer the case, and allocation pressure is down slightly compared to the baseline on such a repeat-the-same-bootstrap stress test:
>>
>> Baseline:
>>
>> Benchmark Mode Cnt Score Error Units
>> SCFB.makeConcatWithConstants avgt 5 2170.039 ? 117.441 ns/op
>> SCFB.makeConcatWithConstants:?gc.alloc.rate.norm avgt 5 3538.020 ? 4.558 B/op
>>
>> This patch:
>>
>> Benchmark Mode Cnt Score Error Units
>> SCFB.makeConcatWithConstants avgt 5 2144.807 ? 162.685 ns/op
>> SCFB.makeConcatWithConstants:?gc.alloc.rate.norm avgt 5 3184.943 ? 4.495 B/op
>
> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
>
> Address review comments from @ExE-Boss
The reduction of the LF classes is promising. This looks okay with me. This PR would rely on testing to catch issues that are not easily caught through code review.
-------------
Marked as reviewed by mchung (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/8855
More information about the core-libs-dev
mailing list