BAEL-1065 Added JMH benchmarks

This commit is contained in:
iaforek
2017-09-04 21:09:29 +01:00
parent 2127961922
commit 6c43977876
2 changed files with 449 additions and 392 deletions
@@ -1,25 +1,46 @@
package com.baeldung.string;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
public class StringBufferStringBuilder {
public static void main(String[] args) {
public static void main(String[] args) throws RunnerException {
int iterations = 10000000;
Options opt = new OptionsBuilder()
.include(StringBufferStringBuilder.class.getSimpleName())
.build();
System.gc();
long startTime = System.currentTimeMillis();
StringBuffer stringBuffer = new StringBuffer("abc");
for (int i = 0; i < iterations; i++) {
stringBuffer.append("def");
}
System.out.println("Time taken by StringBuffer: " + (System.currentTimeMillis() - startTime) + "ms"); // Time taken by StringBuffer: 394ms
System.gc();
startTime = System.currentTimeMillis();
StringBuilder stringBuilder = new StringBuilder("abc");
for (int i = 0; i < iterations; i++) {
stringBuilder.append("def");
}
System.out.println("Time taken by StringBuilder: " + (System.currentTimeMillis() - startTime) + "ms"); // Time taken by StringBuilder: 129ms
new Runner(opt).run();
}
}
@State(Scope.Benchmark)
public static class MyState {
int iterations = 1000;
String initial = "abc";
String suffix = "def";
}
@Benchmark
public StringBuffer benchmarkStringBuffer(MyState state) {
StringBuffer stringBuffer = new StringBuffer(state.initial);
for (int i = 0; i < state.iterations; i++) {
stringBuffer.append(state.suffix);
}
return stringBuffer;
}
@Benchmark
public StringBuilder benchmarkStringBuilder(MyState state) {
StringBuilder stringBuilder = new StringBuilder(state.initial);
for (int i = 0; i < state.iterations; i++) {
stringBuilder.append(state.suffix);
}
return stringBuilder;
}
}