8265237: String.join and StringJoiner can be improved further

Reviewed-by: rriggs, redestad
This commit is contained in:
Peter Levart 2021-04-21 10:32:03 +00:00
parent ed477da9c6
commit 98cb81b381
6 changed files with 197 additions and 40 deletions

View file

@ -25,12 +25,14 @@ package org.openjdk.bench.java.util;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Warmup;
import java.util.StringJoiner;
import java.util.concurrent.ThreadLocalRandom;
@ -41,9 +43,17 @@ import java.util.concurrent.TimeUnit;
*/
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Fork(jvmArgsAppend = {"-Xms2g", "-Xmx2g"})
@Warmup(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@Fork(value = 3, jvmArgsAppend = {"-Xms1g", "-Xmx1g"})
public class StringJoinerBenchmark {
@Benchmark
public String join(Data data) {
String[] stringArray = data.stringArray;
return String.join(",", stringArray);
}
@Benchmark
public String stringJoiner(Data data) {
String[] stringArray = data.stringArray;
@ -56,10 +66,10 @@ public class StringJoinerBenchmark {
@Param({"latin", "cyrillic"})
private String mode;
@Param({"8", "32"})
@Param({"1", "8", "32", "128"})
private int length;
@Param({"5", "10"})
@Param({"5", "20"})
private int count;
private String[] stringArray;