On Wed, 1 Jun 2022 13:31:27 GMT, Claes Redestad <redes...@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