<div dir="ltr">Done.<div><br></div><div><a href="https://dl.dropboxusercontent.com/u/16109193/open_jdk/string_builder_concat_2.zip">https://dl.dropboxusercontent.com/u/16109193/open_jdk/string_builder_concat_2.zip</a><br></div>
<div><br></div><div>obs: stay <span style="font-family:arial,sans-serif;font-size:13px">the 2 chars to better performance.</span></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Aug 10, 2014 at 8:03 PM, Claes Redestad <span dir="ltr"><<a href="mailto:claes.redestad@oracle.com" target="_blank">claes.redestad@oracle.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">+1<br>
<br>
Some suggestions (mostly nits):<br>
<br>
- in places like src/share/classes/java/util/<u></u>regex/Pattern.java you introducesingle-char<br>
strings which might use a char instead:<br>
<br>
- result.append("|"+next);<br>
+ result.append('|').append(<u></u>next);<br>
<br>
- in places like src/share/classes/sun/<u></u>security/provider/PolicyFile.<u></u>java<br>
you end up with a sequence of String literal appends which could be merged into one:<br>
<br>
- sb.append(principalInfo[i][0] + " " +<br>
- "\"" + principalInfo[i][1] + "\"");<br>
+ sb.append(principalInfo[i][0])<u></u>.append(" \"")<br>
+ .append(principalInfo[i][1]).<u></u>append('"');<br>
<br>
- in some places like src/share/classes/java/text/<u></u>ChoiceFormat.java<br>
you end up doing append(""). I guess the empty string concatenation was used as a form<br>
of primitive-to-string coercion and was probably always redundant already, but care needs<br>
to be taken that doing the append directly behave as intended.<br>
<br>
I think it should be safe to just remove the empty string append in most cases:<br>
<br>
- result.append(""+choiceLimits[<u></u>i]);<br>
+ result.append(choiceLimits[i])<u></u>;<br>
<br>
Thanks!<br>
<br>
/Claes<br>
<br>
On 2014-08-10 23:33, Otávio Gonçalves de Santana wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
*Motivation:* Make another append instead of concat String inside of append<div><div class="h5"><br>
parameter in StringBuilder class. To avoid an extra StringBuilder created<br>
for the purpose of concatenating. So it will save memory and will faster<br>
than concat String.<br>
Doing a code to benchMark[1], the result is:<br>
<br>
Benchmark Mode Samples<br>
Mean Mean error Units<br>
m.<u></u>StringBuilderConcatBenchMark.<u></u>stringBuilder thrpt 10<br>
6317444.705 108673.584 ops/s<br>
m.<u></u>StringBuilderConcatBenchMark.<u></u>stringBuilderWithConcat thrpt 10<br>
<a href="tel:3354554.435" value="+553354554435" target="_blank">3354554.435</a> 68353.924 ops/s<br>
<br>
The webrev of all code is:<br>
<a href="https://dl.dropboxusercontent.com/u/16109193/open_jdk/string_builder_concat.zip" target="_blank">https://dl.dropboxusercontent.<u></u>com/u/16109193/open_jdk/<u></u>string_builder_concat.zip</a><br>
<<a href="https://dl.dropboxusercontent.com/u/16109193/open_jdk/string_builder_concat.zip" target="_blank">https://dl.<u></u>dropboxusercontent.com/u/<u></u>16109193/open_jdk/string_<u></u>builder_concat.zip</a>><br>
<br>
[1]<br>
<br>
@State(Scope.Thread)<br>
@OutputTimeUnit(TimeUnit.<u></u>SECONDS)<br>
public class StringBuilderConcatBenchMark {<br>
<br>
<br>
private static final String F = "!!!!";<br>
private static final String E = " running in Java ";<br>
private static final String D = " in the code ";<br>
private static final String C = " to try impact ";<br>
private static final String B = " with some text ";<br>
private static final String A = "Doing a test";<br>
<br>
@GenerateMicroBenchmark<br>
public void stringBuilder(BlackHole bh) {<br>
bh.consume(createBuilder(A, B, C, D, E, F));<br>
}<br>
<br>
@GenerateMicroBenchmark<br>
public void stringBuilderWithConcat(<u></u>BlackHole bh) {<br>
bh.consume(<u></u>createBuilderWithConcat(A, B, C, D, E, F));<br>
}<br>
<br>
private StringBuilder createBuilder(String... values) {<br>
StringBuilder text = new StringBuilder();<br>
text.append(values[0]).append(<u></u>values[1])<br>
.append(values[2]).append(<u></u>values[3])<br>
.append(values[4]).append(<u></u>values[5]);<br>
return text;<br>
}<br>
private StringBuilder createBuilderWithConcat(<u></u>String... values) {<br>
StringBuilder text = new StringBuilder();<br>
text.append(values[0] + values[1])<br>
.append(values[2] + values[3])<br>
.append(values[4]+ values[5]);<br>
return text;<br>
}<br>
}<br>
<br>
</div></div></blockquote>
<br>
</blockquote></div><br><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>