<div dir="ltr"><div><div><b>Motivation:</b> Make another append instead of concat String inside of append parameter in StringBuilder class. To avoid an extra StringBuilder created for the purpose of concatenating. So it will save memory and will faster than concat String.</div>
<div>Doing a code to benchMark[1], the result is:</div></div><div><br></div><div><div>Benchmark Mode Samples Mean Mean error Units</div><div>m.StringBuilderConcatBenchMark.stringBuilder thrpt 10 6317444.705 108673.584 ops/s</div>
<div>m.StringBuilderConcatBenchMark.stringBuilderWithConcat thrpt 10 3354554.435 68353.924 ops/s</div></div><div><br></div><div>The webrev of all code is: <a href="https://dl.dropboxusercontent.com/u/16109193/open_jdk/string_builder_concat.zip ">https://dl.dropboxusercontent.com/u/16109193/open_jdk/string_builder_concat.zip </a></div>
<div><br></div><div>[1]</div><div><div><br></div><div>@State(Scope.Thread)</div><div>@OutputTimeUnit(TimeUnit.SECONDS)</div><div>public class StringBuilderConcatBenchMark {</div><div><br></div><div> </div><div> private static final String F = "!!!!";</div>
<div><span class="" style="white-space:pre"> </span>private static final String E = " running in Java ";</div><div><span class="" style="white-space:pre"> </span>private static final String D = " in the code ";</div>
<div><span class="" style="white-space:pre"> </span>private static final String C = " to try impact ";</div><div><span class="" style="white-space:pre"> </span>private static final String B = " with some text ";</div>
<div><span class="" style="white-space:pre"> </span>private static final String A = "Doing a test";</div><div><br></div><div><span class="" style="white-space:pre"> </span>@GenerateMicroBenchmark</div><div><span class="" style="white-space:pre"> </span>public void stringBuilder(BlackHole bh) {</div>
<div><span class="" style="white-space:pre"> </span>bh.consume(createBuilder(A, B, C, D, E, F));</div><div><span class="" style="white-space:pre"> </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>@GenerateMicroBenchmark</div>
<div><span class="" style="white-space:pre"> </span>public void stringBuilderWithConcat(BlackHole bh) {</div><div><span class="" style="white-space:pre"> </span>bh.consume(createBuilderWithConcat(A, B, C, D, E, F));</div>
<div><span class="" style="white-space:pre"> </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>private StringBuilder createBuilder(String... values) {</div><div><span class="" style="white-space:pre"> </span>StringBuilder text = new StringBuilder();</div>
<div><span class="" style="white-space:pre"> </span>text.append(values[0]).append(values[1])</div><div><span class="" style="white-space:pre"> </span>.append(values[2]).append(values[3])</div><div><span class="" style="white-space:pre"> </span>.append(values[4]).append(values[5]);</div>
<div><span class="" style="white-space:pre"> </span>return text;</div><div><span class="" style="white-space:pre"> </span>}</div><div><span class="" style="white-space:pre"> </span></div><div><span class="" style="white-space:pre"> </span>private StringBuilder createBuilderWithConcat(String... values) {</div>
<div><span class="" style="white-space:pre"> </span>StringBuilder text = new StringBuilder();</div><div><span class="" style="white-space:pre"> </span>text.append(values[0] + values[1])</div><div><span class="" style="white-space:pre"> </span>.append(values[2] + values[3])</div>
<div><span class="" style="white-space:pre"> </span>.append(values[4]+ values[5]);</div><div><span class="" style="white-space:pre"> </span>return text;</div><div><span class="" style="white-space:pre"> </span>}</div><div>
}<br clear="all"><div><br></div>-- <br><div dir="ltr"><div><div style="text-align:center"><div><span style="text-align:start">Otávio Gonçalves de Santana</span><div style="text-align:start"><div style="text-align:center">
<br><div style="text-align:left"><font face="Tahoma">blog: </font><a href="http://otaviosantana.blogspot.com.br/" style="text-align:center" target="_blank">http://otaviosantana.blogspot.com.br/</a></div><div style="text-align:left">
twitter: <a href="http://twitter.com/otaviojava" target="_blank">http://twitter.com/otaviojava</a></div><div style="text-align:left">site: <span style="text-align:center"><font color="#0000ee"><u><a href="http://about.me/otaviojava" target="_blank">http://about.me/otaviojava</a></u></font></span></div>
<div style="text-align:left">55 (11) 98255-3513</div></div></div></div></div></div></div>
</div><div style="text-align:-webkit-auto"><br></div></div>
</div>