I believe yes. Using the -XX:+OptimizeStringConcat: java -jar -XX:+OptimizeStringConcat target/microbenchmarks.jar ".*StringBuilderConcatBenchMark.*" -wi 10 -i 10 -f 1
The same thing happened: Benchmark Mode Samples Mean Mean error Units m.StringBuilderConcatBenchMark.stringBuilder thrpt 10 6316489.783 211751.479 ops/s m.StringBuilderConcatBenchMark.stringBuilderWithConcat thrpt 10 3206244.215 60752.652 ops/s So, can you review these changes, please. https://bugs.openjdk.java.net/browse/JDK-8055723 http://cr.openjdk.java.net/~weijun/8055723/client/webrev.02/ http://cr.openjdk.java.net/~weijun/8055723/core/webrev.02/ http://cr.openjdk.java.net/~weijun/8055723/core/webrev.03/ On Fri, Aug 29, 2014 at 5:01 AM, Wang Weijun <weijun.w...@oracle.com> wrote: > So it's not that the optimization fails but there is no optimization on > them yet. > > I do see the .append("x") case will be easy to deal with, but it looks > like historically javac has not been a place to do many optimizations. It > mostly converts the java source to byte codes in a 1-to-1 mapping and let > VM do whatever it wants (to optimize). When you talked about compiling > multiple concatenation into using a single StringBuilder, it's more like > choosing the correct implementation rather than an optimization. > > I don't expect to see big change on this in the near future, so shall we > go on with the current enhancement? > > Thanks > Max > > On Aug 29, 2014, at 2:17, Ulf Zibis <ulf.zi...@cosoco.de> wrote: > > > I mean: > > It does not output byte code that only uses a single char array to > compose the entire String in question. > > With "optimization fails", I also mean, there is used an additional > "StringComposer" e.g. another StringBuilder or a StringJoiner in addition > to the 1st StringBuilder. > > > > -Ulf > > > > Am 27.08.2014 um 14:02 schrieb Pavel Rappo: > >> Could you please explain what you mean by "javac optimization fails" > here? > >> > >> -Pavel > >> > >> On 27 Aug 2014, at 10:41, Ulf Zibis <ulf.zi...@cosoco.de> wrote: > >> > >>> 4.) Now we see, that javac optimization fails again if StringBuilder, > concatenation, toString(), append(String), append(Collection) etc. and > StringJoiner use is mixed. > >> > > > > -- Otávio Gonçalves de Santana blog: http://otaviosantana.blogspot.com.br/ twitter: http://twitter.com/otaviojava site: *http://about.me/otaviojava <http://about.me/otaviojava>* 55 (11) 98255-3513