Using StringBuilder instead StringBuffer[JAXP]
Otávio Gonçalves de Santana
otaviojava at java.net
Tue Dec 23 09:46:40 UTC 2014
*Motivation:* StringBuffer is synchronized while StringBuilder is not which
makes StringBuilder faster than StringBuffer[1]. The strategy was removed
the StringBuffer when it is not necessary.
WebRev:
https://dl.dropboxusercontent.com/u/16109193/open_jdk/jaxp/buffer2builder/index.html
[1]
@State(Scope.Thread)
@OutputTimeUnit(TimeUnit.SECONDS)
public class StringBufferBenchmark {
private List<String> texts;
@Param("10000000")
private int param;
@Setup
public void setup() {
texts = new LinkedList<>();
Random random = new Random();
for (int index = 0; index < param; index++) {
char a = (char) random.nextInt();
texts.add(String.valueOf(a));
}
}
@GenerateMicroBenchmark
public void stringBuffer(BlackHole bh) {
StringBuffer sb = new StringBuffer();
texts.stream().forEach(sb::append);
bh.consume(sb.toString());
}
@GenerateMicroBenchmark
public void stringBuilder(BlackHole bh) {
StringBuilder sb = new StringBuilder();
texts.stream().forEach(sb::append);
bh.consume(sb.toString());
}
}
java -jar target/microbenchmarks.jar ".*StringBufferBenchmark*." -wi 20 -i
20 -f 1
Benchmark (param) Mode Samples
Mean Mean error Units
m.StringBufferBenchmark.stringBuffer 10000000 thrpt 20
3.208 0.406 ops/s
m.StringBufferBenchmark.stringBuilder 10000000 thrpt 20
4.795 0.037 ops/s
--
Otávio Gonçalves de Santana
twitter: http://twitter.com/otaviojava
site: *http://about.me/otaviojava <http://about.me/otaviojava>*
55 (11) 98255-3513
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 814_updated.patch
Type: text/x-patch
Size: 195975 bytes
Desc: not available
URL: <http://mail.openjdk.java.net/pipermail/core-libs-dev/attachments/20141223/88127a46/814_updated.patch>
More information about the core-libs-dev
mailing list