On Sat, 6 Jul 2024 00:15:04 GMT, Shaojin Wen <d...@openjdk.org> wrote:
>> String.format is widely used, and improving its performance is very >> meaningful. This PR can significantly improve the performance of >> String.format. Sorry, there are many changes, which will take a lot of time. >> I hope you can review it patiently. >> >> >> Improved performance includes the following: >> >> ## 1. Write directly during the parse process to reduce object allocation. >> >> In the current Formatter implementation, some objects do not need to be >> allocated, such as: >> >> >> class Formatter { >> public Formatter format(Locale l, String format, Object ... args) { >> List<FormatString> fsa = parse(format); >> // ... >> } >> >> static List<FormatString> parse(String s) { >> ArrayList<FormatString> al = new ArrayList<>(); >> >> while (i < max) { >> int n = s.indexOf('%', i); >> if (n < 0) { >> // >> al.add(new FixedString(s, i, max)); >> } >> } >> } >> } >> >> In the process of parsing, the content that is not a Specifier is directly >> appended without going through FixedString. By directly printing the parsed >> FormatString object, there is no need to construct a `List<FormatString> >> fsa` to store it. >> >> ## 2. Fast path print >> Use specialized FormatString implementations for single-character and >> single-width specifiers to avoid calling the large FormatSpecifier#print >> method. >> >> ## 3. String.format directly calls j.u.Formatter >> String.format directly calls j.u.Formatter via SharedSecrets to improve >> performance > > Shaojin Wen has updated the pull request incrementally with one additional > commit since the last revision: > > Implementing JavaUtilFormatterAccess using anonymous class The performance degradation of decimalFormat only occurred on the MacBook M1, and it did not occur when I tested it on the cloud host. ## [Aliyun ecs.c8a](https://help.aliyun.com/zh/ecs/user-guide/overview-of-instance-families#c8a) * CPU AMD EPYCTM Genoa * Platform x64 # baseline b83766e59063a41ea8801ac9e7c15dce67727c62 -Benchmark Mode Cnt Score Error Units -StringFormat.complexFormat avgt 15 590.667 ± 17.059 ns/op -StringFormat.decimalFormat avgt 15 293.412 ± 2.359 ns/op -StringFormat.intFormat avgt 15 66.778 ± 0.865 ns/op -StringFormat.intFormatUtf16 avgt 15 69.233 ± 0.090 ns/op -StringFormat.intHexFormat avgt 15 116.871 ± 0.783 ns/op -StringFormat.intHexFormatUtf16 avgt 15 130.486 ± 0.749 ns/op -StringFormat.intHexUFormat avgt 15 122.547 ± 0.952 ns/op -StringFormat.intHexUFormatUtf16 avgt 15 133.570 ± 2.035 ns/op -StringFormat.intIntFormat avgt 15 118.463 ± 2.773 ns/op -StringFormat.intIntFormatUtf16 avgt 15 120.305 ± 0.973 ns/op -StringFormat.intOctalFormat avgt 15 117.049 ± 1.190 ns/op -StringFormat.intOctalFormatUtf16 avgt 15 131.041 ± 2.719 ns/op -StringFormat.lineFormat avgt 15 46.440 ± 0.355 ns/op -StringFormat.lineFormatUtf16 avgt 15 51.169 ± 0.308 ns/op -StringFormat.stringFormat avgt 15 50.507 ± 1.189 ns/op -StringFormat.stringFormatUtf16 avgt 15 54.684 ± 0.136 ns/op -StringFormat.stringIntFormat avgt 15 107.311 ± 0.719 ns/op -StringFormat.stringIntFormatUtf16 avgt 15 115.677 ± 2.801 ns/op -StringFormat.stringIntHexFormat avgt 15 103.388 ± 0.585 ns/op -StringFormat.stringIntHexUFormat avgt 15 103.773 ± 0.215 ns/op -StringFormat.stringIntOctalFormat avgt 15 103.900 ± 0.931 ns/op -StringFormat.stringIntOctalFormatUtf16 avgt 15 116.362 ± 1.118 ns/op -StringFormat.stringIntRFormat avgt 15 127.924 ± 0.122 ns/op -StringFormat.stringIntRFormatUtf16 avgt 15 142.177 ± 3.507 ns/op -StringFormat.stringWidthIntFormat avgt 15 142.864 ± 2.229 ns/op -StringFormat.stringWidthIntFormatUtf16 avgt 15 141.588 ± 0.745 ns/op -StringFormat.widthStringFormat avgt 15 62.167 ± 0.439 ns/op -StringFormat.widthStringFormatUtf16 avgt 15 67.403 ± 0.804 ns/op -StringFormat.widthStringIntFormat avgt 15 136.524 ± 0.521 ns/op -StringFormat.widthStringIntFormatUtf16 avgt 15 138.060 ± 2.828 ns/op # current b2f517ba459c55b2d69fe5a43723d15370cdab4b +Benchmark Mode Cnt Score Error Units +StringFormat.complexFormat avgt 15 412.950 ± 26.777 ns/op +StringFormat.decimalFormat avgt 15 260.532 ± 2.942 ns/op +StringFormat.intFormat avgt 15 24.184 ± 1.125 ns/op +StringFormat.intFormatUtf16 avgt 15 27.183 ± 0.151 ns/op +StringFormat.intHexFormat avgt 15 55.386 ± 0.344 ns/op +StringFormat.intHexFormatUtf16 avgt 15 70.344 ± 1.067 ns/op +StringFormat.intHexUFormat avgt 15 61.599 ± 2.133 ns/op +StringFormat.intHexUFormatUtf16 avgt 15 80.965 ± 6.596 ns/op +StringFormat.intIntFormat avgt 15 53.510 ± 0.804 ns/op +StringFormat.intIntFormatUtf16 avgt 15 53.795 ± 0.289 ns/op +StringFormat.intOctalFormat avgt 15 65.075 ± 0.526 ns/op +StringFormat.intOctalFormatUtf16 avgt 15 79.609 ± 2.225 ns/op +StringFormat.lineFormat avgt 15 24.306 ± 0.061 ns/op +StringFormat.lineFormatUtf16 avgt 15 28.136 ± 0.133 ns/op +StringFormat.stringFormat avgt 15 24.137 ± 0.159 ns/op +StringFormat.stringFormatUtf16 avgt 15 28.368 ± 0.065 ns/op +StringFormat.stringIntFormat avgt 15 50.953 ± 0.121 ns/op +StringFormat.stringIntFormatUtf16 avgt 15 62.363 ± 0.501 ns/op +StringFormat.stringIntHexFormat avgt 15 59.528 ± 0.199 ns/op +StringFormat.stringIntHexUFormat avgt 15 58.935 ± 0.515 ns/op +StringFormat.stringIntOctalFormat avgt 15 68.614 ± 0.140 ns/op +StringFormat.stringIntOctalFormatUtf16 avgt 15 80.326 ± 1.014 ns/op +StringFormat.stringIntRFormat avgt 15 60.547 ± 0.743 ns/op +StringFormat.stringIntRFormatUtf16 avgt 15 76.189 ± 3.493 ns/op +StringFormat.stringWidthIntFormat avgt 15 57.070 ± 0.616 ns/op +StringFormat.stringWidthIntFormatUtf16 avgt 15 68.253 ± 0.288 ns/op +StringFormat.widthStringFormat avgt 15 24.473 ± 0.251 ns/op +StringFormat.widthStringFormatUtf16 avgt 15 29.436 ± 0.050 ns/op +StringFormat.widthStringIntFormat avgt 15 57.610 ± 0.535 ns/op +StringFormat.widthStringIntFormatUtf16 avgt 15 65.597 ± 1.587 ns/op | | baseline | current | delta | | --- | --- | --- | --- | | StringFormat.complexFormat | 590.667 | 412.950 | 43.04% | | StringFormat.decimalFormat | 293.412 | 260.532 | 12.62% | | StringFormat.intFormat | 66.778 | 24.184 | 176.12% | | StringFormat.intFormatUtf16 | 69.233 | 27.183 | 154.69% | | StringFormat.intHexFormat | 116.871 | 55.386 | 111.01% | | StringFormat.intHexFormatUtf16 | 130.486 | 70.344 | 85.50% | | StringFormat.intHexUFormat | 122.547 | 61.599 | 98.94% | | StringFormat.intHexUFormatUtf16 | 133.570 | 80.965 | 64.97% | | StringFormat.intIntFormat | 118.463 | 53.510 | 121.38% | | StringFormat.intIntFormatUtf16 | 120.305 | 53.795 | 123.64% | | StringFormat.intOctalFormat | 117.049 | 65.075 | 79.87% | | StringFormat.intOctalFormatUtf16 | 131.041 | 79.609 | 64.61% | | StringFormat.lineFormat | 46.440 | 24.306 | 91.06% | | StringFormat.lineFormatUtf16 | 51.169 | 28.136 | 81.86% | | StringFormat.stringFormat | 50.507 | 24.137 | 109.25% | | StringFormat.stringFormatUtf16 | 54.684 | 28.368 | 92.77% | | StringFormat.stringIntFormat | 107.311 | 50.953 | 110.61% | | StringFormat.stringIntFormatUtf16 | 115.677 | 62.363 | 85.49% | | StringFormat.stringIntHexFormat | 103.388 | 59.528 | 73.68% | | StringFormat.stringIntHexUFormat | 103.773 | 58.935 | 76.08% | | StringFormat.stringIntOctalFormat | 103.900 | 68.614 | 51.43% | | StringFormat.stringIntOctalFormatUtf16 | 116.362 | 80.326 | 44.86% | | StringFormat.stringIntRFormat | 127.924 | 60.547 | 111.28% | | StringFormat.stringIntRFormatUtf16 | 142.177 | 76.189 | 86.61% | | StringFormat.stringWidthIntFormat | 142.864 | 57.070 | 150.33% | | StringFormat.stringWidthIntFormatUtf16 | 141.588 | 68.253 | 107.45% | | StringFormat.widthStringFormat | 62.167 | 24.473 | 154.02% | | StringFormat.widthStringFormatUtf16 | 67.403 | 29.436 | 128.98% | | StringFormat.widthStringIntFormat | 136.524 | 57.610 | 136.98% | | StringFormat.widthStringIntFormatUtf16 | 138.060 | 65.597 | 110.47% | ## [aliyun ecs.c8i](https://help.aliyun.com/zh/ecs/user-guide/overview-of-instance-families#c8i) * CPU Intel® Xeon® Emerald * Platform x64 # baseline b83766e59063a41ea8801ac9e7c15dce67727c62 -Benchmark Mode Cnt Score Error Units -StringFormat.complexFormat avgt 15 529.057 ± 4.446 ns/op -StringFormat.decimalFormat avgt 15 322.432 ± 1.405 ns/op -StringFormat.intFormat avgt 15 65.234 ± 0.220 ns/op -StringFormat.intFormatUtf16 avgt 15 70.822 ± 0.907 ns/op -StringFormat.intHexFormat avgt 15 108.173 ± 0.526 ns/op -StringFormat.intHexFormatUtf16 avgt 15 123.867 ± 0.686 ns/op -StringFormat.intHexUFormat avgt 15 112.425 ± 0.841 ns/op -StringFormat.intHexUFormatUtf16 avgt 15 128.555 ± 1.833 ns/op -StringFormat.intIntFormat avgt 15 117.720 ± 1.043 ns/op -StringFormat.intIntFormatUtf16 avgt 15 119.817 ± 1.976 ns/op -StringFormat.intOctalFormat avgt 15 108.340 ± 0.417 ns/op -StringFormat.intOctalFormatUtf16 avgt 15 121.281 ± 2.423 ns/op -StringFormat.lineFormat avgt 15 46.437 ± 0.146 ns/op -StringFormat.lineFormatUtf16 avgt 15 52.059 ± 0.268 ns/op -StringFormat.stringFormat avgt 15 48.699 ± 0.266 ns/op -StringFormat.stringFormatUtf16 avgt 15 55.069 ± 0.295 ns/op -StringFormat.stringIntFormat avgt 15 97.408 ± 0.855 ns/op -StringFormat.stringIntFormatUtf16 avgt 15 113.801 ± 1.206 ns/op -StringFormat.stringIntHexFormat avgt 15 95.091 ± 0.540 ns/op -StringFormat.stringIntHexUFormat avgt 15 94.368 ± 0.389 ns/op -StringFormat.stringIntOctalFormat avgt 15 94.731 ± 0.592 ns/op -StringFormat.stringIntOctalFormatUtf16 avgt 15 107.460 ± 0.100 ns/op -StringFormat.stringIntRFormat avgt 15 114.745 ± 0.211 ns/op -StringFormat.stringIntRFormatUtf16 avgt 15 132.979 ± 3.001 ns/op -StringFormat.stringWidthIntFormat avgt 15 129.590 ± 0.719 ns/op -StringFormat.stringWidthIntFormatUtf16 avgt 15 134.643 ± 2.166 ns/op -StringFormat.widthStringFormat avgt 15 60.557 ± 0.716 ns/op -StringFormat.widthStringFormatUtf16 avgt 15 67.925 ± 0.798 ns/op -StringFormat.widthStringIntFormat avgt 15 125.359 ± 1.424 ns/op -StringFormat.widthStringIntFormatUtf16 avgt 15 131.336 ± 1.519 ns/op # current b2f517ba459c55b2d69fe5a43723d15370cdab4b +Benchmark Mode Cnt Score Error Units +StringFormat.complexFormat avgt 15 386.754 ± 7.144 ns/op +StringFormat.decimalFormat avgt 15 289.619 ± 2.738 ns/op +StringFormat.intFormat avgt 15 25.465 ± 2.249 ns/op +StringFormat.intFormatUtf16 avgt 15 31.938 ± 1.428 ns/op +StringFormat.intHexFormat avgt 15 51.730 ± 1.685 ns/op +StringFormat.intHexFormatUtf16 avgt 15 71.242 ± 1.330 ns/op +StringFormat.intHexUFormat avgt 15 57.009 ± 0.636 ns/op +StringFormat.intHexUFormatUtf16 avgt 15 75.337 ± 0.378 ns/op +StringFormat.intIntFormat avgt 15 52.773 ± 0.163 ns/op +StringFormat.intIntFormatUtf16 avgt 15 52.769 ± 0.131 ns/op +StringFormat.intOctalFormat avgt 15 58.615 ± 0.456 ns/op +StringFormat.intOctalFormatUtf16 avgt 15 75.639 ± 0.689 ns/op +StringFormat.lineFormat avgt 15 23.287 ± 0.093 ns/op +StringFormat.lineFormatUtf16 avgt 15 30.649 ± 0.150 ns/op +StringFormat.stringFormat avgt 15 22.710 ± 0.055 ns/op +StringFormat.stringFormatUtf16 avgt 15 30.146 ± 0.114 ns/op +StringFormat.stringIntFormat avgt 15 50.326 ± 0.122 ns/op +StringFormat.stringIntFormatUtf16 avgt 15 62.278 ± 1.169 ns/op +StringFormat.stringIntHexFormat avgt 15 56.447 ± 0.280 ns/op +StringFormat.stringIntHexUFormat avgt 15 56.390 ± 0.641 ns/op +StringFormat.stringIntOctalFormat avgt 15 67.885 ± 0.603 ns/op +StringFormat.stringIntOctalFormatUtf16 avgt 15 78.597 ± 1.861 ns/op +StringFormat.stringIntRFormat avgt 15 56.320 ± 0.581 ns/op +StringFormat.stringIntRFormatUtf16 avgt 15 75.227 ± 2.130 ns/op +StringFormat.stringWidthIntFormat avgt 15 54.156 ± 0.110 ns/op +StringFormat.stringWidthIntFormatUtf16 avgt 15 68.158 ± 2.946 ns/op +StringFormat.widthStringFormat avgt 15 23.148 ± 0.150 ns/op +StringFormat.widthStringFormatUtf16 avgt 15 31.589 ± 0.283 ns/op +StringFormat.widthStringIntFormat avgt 15 57.852 ± 0.495 ns/op +StringFormat.widthStringIntFormatUtf16 avgt 15 69.162 ± 2.344 ns/op | | baseline | current | delta | | --- | --- | --- | --- | | StringFormat.complexFormat | 529.057 | 386.754 | 36.79% | | StringFormat.decimalFormat | 322.432 | 289.619 | 11.33% | | StringFormat.intFormat | 65.234 | 25.465 | 156.17% | | StringFormat.intFormatUtf16 | 70.822 | 31.938 | 121.75% | | StringFormat.intHexFormat | 108.173 | 51.730 | 109.11% | | StringFormat.intHexFormatUtf16 | 123.867 | 71.242 | 73.87% | | StringFormat.intHexUFormat | 112.425 | 57.009 | 97.21% | | StringFormat.intHexUFormatUtf16 | 128.555 | 75.337 | 70.64% | | StringFormat.intIntFormat | 117.720 | 52.773 | 123.07% | | StringFormat.intIntFormatUtf16 | 119.817 | 52.769 | 127.06% | | StringFormat.intOctalFormat | 108.340 | 58.615 | 84.83% | | StringFormat.intOctalFormatUtf16 | 121.281 | 75.639 | 60.34% | | StringFormat.lineFormat | 46.437 | 23.287 | 99.41% | | StringFormat.lineFormatUtf16 | 52.059 | 30.649 | 69.86% | | StringFormat.stringFormat | 48.699 | 22.710 | 114.44% | | StringFormat.stringFormatUtf16 | 55.069 | 30.146 | 82.67% | | StringFormat.stringIntFormat | 97.408 | 50.326 | 93.55% | | StringFormat.stringIntFormatUtf16 | 113.801 | 62.278 | 82.73% | | StringFormat.stringIntHexFormat | 95.091 | 56.447 | 68.46% | | StringFormat.stringIntHexUFormat | 94.368 | 56.390 | 67.35% | | StringFormat.stringIntOctalFormat | 94.731 | 67.885 | 39.55% | | StringFormat.stringIntOctalFormatUtf16 | 107.460 | 78.597 | 36.72% | | StringFormat.stringIntRFormat | 114.745 | 56.320 | 103.74% | | StringFormat.stringIntRFormatUtf16 | 132.979 | 75.227 | 76.77% | | StringFormat.stringWidthIntFormat | 129.590 | 54.156 | 139.29% | | StringFormat.stringWidthIntFormatUtf16 | 134.643 | 68.158 | 97.55% | | StringFormat.widthStringFormat | 60.557 | 23.148 | 161.61% | | StringFormat.widthStringFormatUtf16 | 67.925 | 31.589 | 115.03% | | StringFormat.widthStringIntFormat | 125.359 | 57.852 | 116.69% | | StringFormat.widthStringIntFormatUtf16 | 131.336 | 69.162 | 89.90% | ## [aliyun ecs.c8y](https://help.aliyun.com/zh/ecs/user-guide/overview-of-instance-families#c8y) * CPU Yitian710 aarch64 * Platform aarch64 # baseline b83766e59063a41ea8801ac9e7c15dce67727c62 -Benchmark Mode Cnt Score Error Units -StringFormat.complexFormat avgt 15 773.031 ± 3.099 ns/op -StringFormat.decimalFormat avgt 15 398.171 ± 4.713 ns/op -StringFormat.intFormat avgt 15 103.018 ± 2.348 ns/op -StringFormat.intFormatUtf16 avgt 15 119.492 ± 2.190 ns/op -StringFormat.intHexFormat avgt 15 177.283 ± 3.302 ns/op -StringFormat.intHexFormatUtf16 avgt 15 195.128 ± 9.053 ns/op -StringFormat.intHexUFormat avgt 15 194.399 ± 7.280 ns/op -StringFormat.intHexUFormatUtf16 avgt 15 200.689 ± 4.014 ns/op -StringFormat.intIntFormat avgt 15 180.146 ± 1.970 ns/op -StringFormat.intIntFormatUtf16 avgt 15 195.222 ± 13.176 ns/op -StringFormat.intOctalFormat avgt 15 174.285 ± 8.477 ns/op -StringFormat.intOctalFormatUtf16 avgt 15 186.157 ± 3.778 ns/op -StringFormat.lineFormat avgt 15 82.938 ± 0.863 ns/op -StringFormat.lineFormatUtf16 avgt 15 94.125 ± 0.790 ns/op -StringFormat.stringFormat avgt 15 81.651 ± 4.897 ns/op -StringFormat.stringFormatUtf16 avgt 15 98.348 ± 0.773 ns/op -StringFormat.stringIntFormat avgt 15 167.333 ± 1.800 ns/op -StringFormat.stringIntFormatUtf16 avgt 15 190.981 ± 4.937 ns/op -StringFormat.stringIntHexFormat avgt 15 157.498 ± 3.696 ns/op -StringFormat.stringIntHexUFormat avgt 15 160.588 ± 3.764 ns/op -StringFormat.stringIntOctalFormat avgt 15 160.813 ± 2.398 ns/op -StringFormat.stringIntOctalFormatUtf16 avgt 15 176.153 ± 7.430 ns/op -StringFormat.stringIntRFormat avgt 15 187.924 ± 0.902 ns/op -StringFormat.stringIntRFormatUtf16 avgt 15 202.559 ± 2.601 ns/op -StringFormat.stringWidthIntFormat avgt 15 194.698 ± 4.673 ns/op -StringFormat.stringWidthIntFormatUtf16 avgt 15 233.417 ± 5.496 ns/op -StringFormat.widthStringFormat avgt 15 100.334 ± 0.915 ns/op -StringFormat.widthStringFormatUtf16 avgt 15 113.190 ± 13.681 ns/op -StringFormat.widthStringIntFormat avgt 15 211.096 ± 1.347 ns/op -StringFormat.widthStringIntFormatUtf16 avgt 15 227.000 ± 10.045 ns/op # current b2f517ba459c55b2d69fe5a43723d15370cdab4b +Benchmark Mode Cnt Score Error Units +StringFormat.complexFormat avgt 15 581.514 ± 13.122 ns/op +StringFormat.decimalFormat avgt 15 348.420 ± 1.901 ns/op +StringFormat.intFormat avgt 15 29.603 ± 0.325 ns/op +StringFormat.intFormatUtf16 avgt 15 35.211 ± 0.459 ns/op +StringFormat.intHexFormat avgt 15 68.486 ± 0.894 ns/op +StringFormat.intHexFormatUtf16 avgt 15 94.581 ± 8.873 ns/op +StringFormat.intHexUFormat avgt 15 77.773 ± 1.939 ns/op +StringFormat.intHexUFormatUtf16 avgt 15 95.887 ± 1.966 ns/op +StringFormat.intIntFormat avgt 15 70.615 ± 1.438 ns/op +StringFormat.intIntFormatUtf16 avgt 15 66.945 ± 2.027 ns/op +StringFormat.intOctalFormat avgt 15 80.453 ± 1.638 ns/op +StringFormat.intOctalFormatUtf16 avgt 15 102.267 ± 3.882 ns/op +StringFormat.lineFormat avgt 15 29.769 ± 0.634 ns/op +StringFormat.lineFormatUtf16 avgt 15 35.713 ± 1.031 ns/op +StringFormat.stringFormat avgt 15 28.574 ± 0.458 ns/op +StringFormat.stringFormatUtf16 avgt 15 35.554 ± 0.496 ns/op +StringFormat.stringIntFormat avgt 15 62.198 ± 3.217 ns/op +StringFormat.stringIntFormatUtf16 avgt 15 89.910 ± 3.620 ns/op +StringFormat.stringIntHexFormat avgt 15 67.230 ± 1.309 ns/op +StringFormat.stringIntHexUFormat avgt 15 66.143 ± 1.140 ns/op +StringFormat.stringIntOctalFormat avgt 15 78.613 ± 1.046 ns/op +StringFormat.stringIntOctalFormatUtf16 avgt 15 104.297 ± 4.769 ns/op +StringFormat.stringIntRFormat avgt 15 67.872 ± 1.229 ns/op +StringFormat.stringIntRFormatUtf16 avgt 15 93.982 ± 1.778 ns/op +StringFormat.stringWidthIntFormat avgt 15 70.326 ± 3.684 ns/op +StringFormat.stringWidthIntFormatUtf16 avgt 15 88.422 ± 5.396 ns/op +StringFormat.widthStringFormat avgt 15 28.349 ± 0.462 ns/op +StringFormat.widthStringFormatUtf16 avgt 15 35.467 ± 0.370 ns/op +StringFormat.widthStringIntFormat avgt 15 68.397 ± 3.443 ns/op +StringFormat.widthStringIntFormatUtf16 avgt 15 86.467 ± 3.557 ns/op | | baseline | current | delta | | --- | --- | --- | --- | | StringFormat.complexFormat | 773.031 | 581.514 | 32.93% | | StringFormat.decimalFormat | 398.171 | 348.420 | 14.28% | | StringFormat.intFormat | 103.018 | 29.603 | 248.00% | | StringFormat.intFormatUtf16 | 119.492 | 35.211 | 239.36% | | StringFormat.intHexFormat | 177.283 | 68.486 | 158.86% | | StringFormat.intHexFormatUtf16 | 195.128 | 94.581 | 106.31% | | StringFormat.intHexUFormat | 194.399 | 77.773 | 149.96% | | StringFormat.intHexUFormatUtf16 | 200.689 | 95.887 | 109.30% | | StringFormat.intIntFormat | 180.146 | 70.615 | 155.11% | | StringFormat.intIntFormatUtf16 | 195.222 | 66.945 | 191.62% | | StringFormat.intOctalFormat | 174.285 | 80.453 | 116.63% | | StringFormat.intOctalFormatUtf16 | 186.157 | 102.267 | 82.03% | | StringFormat.lineFormat | 82.938 | 29.769 | 178.61% | | StringFormat.lineFormatUtf16 | 94.125 | 35.713 | 163.56% | | StringFormat.stringFormat | 81.651 | 28.574 | 185.75% | | StringFormat.stringFormatUtf16 | 98.348 | 35.554 | 176.62% | | StringFormat.stringIntFormat | 167.333 | 62.198 | 169.03% | | StringFormat.stringIntFormatUtf16 | 190.981 | 89.910 | 112.41% | | StringFormat.stringIntHexFormat | 157.498 | 67.230 | 134.27% | | StringFormat.stringIntHexUFormat | 160.588 | 66.143 | 142.79% | | StringFormat.stringIntOctalFormat | 160.813 | 78.613 | 104.56% | | StringFormat.stringIntOctalFormatUtf16 | 176.153 | 104.297 | 68.90% | | StringFormat.stringIntRFormat | 187.924 | 67.872 | 176.88% | | StringFormat.stringIntRFormatUtf16 | 202.559 | 93.982 | 115.53% | | StringFormat.stringWidthIntFormat | 194.698 | 70.326 | 176.85% | | StringFormat.stringWidthIntFormatUtf16 | 233.417 | 88.422 | 163.98% | | StringFormat.widthStringFormat | 100.334 | 28.349 | 253.92% | | StringFormat.widthStringFormatUtf16 | 113.190 | 35.467 | 219.14% | | StringFormat.widthStringIntFormat | 211.096 | 68.397 | 208.63% | | StringFormat.widthStringIntFormatUtf16 | 227.000 | 86.467 | 162.53% | ------------- PR Comment: https://git.openjdk.org/jdk/pull/20055#issuecomment-2211548388