On Mon, 25 Sep 2023 12:20:36 GMT, 温绍锦 <d...@openjdk.org> wrote:
>>> The reason why I split it into multiple small methods is to avoid a single >>> method codeSize > 325. After merging small methods, the performance will >>> decrease. >> >> Yes, I can refactor to keep the same structure and verify performance is >> neutral or better. I can pick that up as a low-priority follow-up if you >> don't mind. > >> > The reason why I split it into multiple small methods is to avoid a single >> > method codeSize > 325. After merging small methods, the performance will >> > decrease. >> >> Yes, I can refactor to keep the same structure and verify performance is >> neutral or better. I can pick that up as a low-priority follow-up if you >> don't mind. > > Thank you very much for your very patient review. I will be happy to see you > make improvements. I see no slowdown in JMH, but I see slowdowns when I run > the loop directly in the code. I am also confused. It may be that codeSize > > 325 cannot be inline, which will cause some scenes to be slower. > > > import org.openjdk.jmh.infra.Blackhole; > > public class StringFormatBench { > public static String s = "str"; > public static int i = 17; > public static long l = 1234567L; > public static float f = 123.37f; > > public void complexFormat(Blackhole bh) { > bh.consume("%3s %10d %4S %04X %4S %04X %4S %04X".formatted(s, i, s, > i, s, i, s, i)); > } > } > > public class StringFormatBenchTest { > public static void complexFormat() throws Throwable { > for (int j = 0; j < 5; j++) { > long start = System.currentTimeMillis(); > for (int i = 0; i < 10_000_000; ++i) { > benchmark.complexFormat(BH); > } > long millis = System.currentTimeMillis() - start; > System.out.println("StringFormatBench-complexFormat millis : " + > millis); > // zulu8.58.0.13 : > // zulu11.52.13 : > // zulu17.38.21 : > // jdk22-ea : 4644 > // jdk22-baseline : 16040 > } > } > > public static void main(String[] args) throws Throwable { > complexFormat(); > } > } > @wenshao Can we consider the code in `FormatSpecifierParser` stable enough > for a thorough review, or do you plan to make other changes there? The current Formatter tests in the test/jdk/java/util/Formatter/ directory are very complete. I think the current version is Stable and I have no plans to make changes. I plan to continue optimizing print performance after this PR is integrated. ------------- PR Comment: https://git.openjdk.org/jdk/pull/15776#issuecomment-1737406412