package examples.benchmarking; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.junit.Test; import uk.co.acuminous.julez.event.handler.DurationMonitor; import uk.co.acuminous.julez.runner.ConcurrentScenarioRunner; import uk.co.acuminous.julez.scenario.BaseScenario; import uk.co.acuminous.julez.scenario.Scenario; import uk.co.acuminous.julez.scenario.ScenarioSource; import uk.co.acuminous.julez.scenario.limiter.InLimboLimiter; import uk.co.acuminous.julez.scenario.source.ScenarioRepeater; import uk.co.acuminous.julez.util.ConcurrencyUtils; @SuppressWarnings("unused") public class StringBenchmarkTest extends BenchmarkTestCase { private int repetitions = 1000000; @Test public void benchmarkConcatenationUsingPlus() { benchmark(new BaseScenario() { @Override public void run() { String s = "1foo" + "1bar"; } }); System.out.println(String.format("%d x \"1foo\" + \"1bar\" took %dms", repetitions, durationMonitor.getDuration())); } @Test public void benchmarkConcatenationUsingStringConcat() { benchmark(new BaseScenario() { @Override public void run() { String s = "2foo".concat("bar"); } }); System.out.println(String.format("%d x \"2foo\".concat(\"2bar\") took %dms", repetitions, durationMonitor.getDuration())); } @Test public void benchmarkConcatenationUsingStringBuffer() { benchmark(new BaseScenario() { @Override public void run() { String s = new StringBuffer().append("3foo").append("3bar").toString(); } }); System.out.println(String.format("%d x new StringBuffer().append(\"3foo\").append(\"3bar\").toString() took %dms", repetitions, durationMonitor.getDuration())); } @Test public void benchmarkConcatenationUsingStringBuilder() { benchmark(new BaseScenario() { @Override public void run() { String s = new StringBuilder().append("4foo").append("4bar").toString(); } }); System.out.println(String.format("%d x new StringBuilder().append(\"4foo\").append(\"4bar\").toString() took %dms", repetitions, durationMonitor.getDuration())); } @Test public void benchmarkConcatenationUsingStringFormat() { benchmark(new BaseScenario() { @Override public void run() { String s = String.format("%s%s", "5foo", "5bar"); } }); System.out.println(String.format("%d x String.format(\"%%s%%s\", \"5foo\", \"5bar\") took %dms", repetitions, durationMonitor.getDuration())); } private void benchmark(Scenario scenario) { benchmark(scenario, repetitions); } }