Using StringBuilder instead StringBuffer[JAXP]
Otávio Gonçalves de Santana
otaviojava at java.net
Thu Feb 5 13:40:51 UTC 2015
On Tue, Dec 23, 2014 at 7:46 AM, Otávio Gonçalves de Santana <
otaviojava at java.net> wrote:
>
> *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
>
--
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
More information about the core-libs-dev
mailing list