Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8136469

OptimizeStringConcat fails on pre-sized StringBuilder shapes

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P2
    • 9
    • 9
    • hotspot
    • None
    • b105
    • Verified

    Description

      A sample benchmark:

          @Benchmark
          @CompilerControl(CompilerControl.Mode.DONT_INLINE)
          public String explicitSized() throws Exception {
              String time = String.valueOf(System.nanoTime());
              String thread = Thread.currentThread().getName();
              String m = method;
              return new StringBuilder(63 + time.length() + thread.length() + m.length())
                      .append("[")
                      .append(time)
                      .append("] ")
                      .append(thread)
                      .append(":")
                      .append("Calling an application method \"")
                      .append(m)
                      .append("\" without fear and prejudice.")
                      .toString();
          }

      This benchmark regresses severely with Compact Strings. Turning OptimizeStringConcat off does not degrade performance further, which means it is broken with Compact Strings to begin with. The disassembly confirms it. Also see the (broken) workaround patch below:

      # JDK 9 Baseline
      LogLineBench.explicitSized: 83.267 ± 3.021 ns/op
      LogLineBench.explicitSized:·gc.alloc.rate.norm: 384.000 ± 0.001 B/op

      # JDK 9 Baseline, -XX:-OptimizeStringConcat
      LogLineBench.explicitSized: 190.090 ± 5.893 ns/op
      LogLineBench.explicitSized:·gc.alloc.rate.norm: 1296.000 ± 0.001 B/op

      # JDK 9 Compact Strings
      LogLineBench.explicitSized: 148.536 ± 5.032 ns/op
      LogLineBench.explicitSized:·gc.alloc.rate.norm: 704.000 ± 0.001 B/op

      # JDK 9 Compact Strings, -XX:-OptimizeStringConcat
      LogLineBench.explicitSized: 143.668 ± 7.654 ns/op
      LogLineBench.explicitSized:·gc.alloc.rate.norm: 704.000 ± 0.001 B/op

      Attachments

        Issue Links

          Activity

            People

              thartmann Tobias Hartmann
              shade Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: