Skip to content

Instantly share code, notes, and snippets.

@franz1981
Created November 10, 2019 11:43
Show Gist options
  • Save franz1981/1e33570d2bbdc09686bed64c04e81558 to your computer and use it in GitHub Desktop.
Save franz1981/1e33570d2bbdc09686bed64c04e81558 to your computer and use it in GitHub Desktop.
import org.openjdk.jmh.annotations.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
@State(Scope.Benchmark)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 5, time = 200, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 5, time = 200, timeUnit = TimeUnit.MILLISECONDS)
@Fork(1)
public class ArrayEscapeAnalysis {
@Param({"16"})
private int size;
private final int finalSize = 16;
private static final int staticFinalSize = 16;
@Benchmark
public int arrayListNoEscapeUnknown() {
final ArrayList<?> list = new ArrayList<>(size);
return list.size();
}
@Benchmark
public int arrayListNoEscapeFinal() {
final ArrayList<?> list = new ArrayList<>(finalSize);
return list.size();
}
@Benchmark
public int arrayListNoEscapeStaticFinal() {
final ArrayList<?> list = new ArrayList<>(staticFinalSize);
return list.size();
}
@Benchmark
public int arrayNoEscapeUnknown() {
final byte[] bytes = new byte[size];
return bytes.length;
}
@Benchmark
public int arrayNoEscapeFinal() {
final byte[] bytes = new byte[finalSize];
return bytes.length;
}
@Benchmark
public int arrayNoEscapeStaticFinal() {
final byte[] bytes = new byte[staticFinalSize];
return bytes.length;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment