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

OptimizeStringConcat fails on pre-sized StringBuilder shapes

XMLWordPrintable

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

      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

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

              Created:
              Updated:
              Resolved: