Created
November 10, 2019 11:43
-
-
Save franz1981/1e33570d2bbdc09686bed64c04e81558 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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