@State(Scope.Thread)
public class JMHArrayBenchmarking {
private static final int ARRAY_SIZE = 64 * 1024 * 1024;
public Integer[] array;
public volatile Integer[] vArray;
@Setup
public void setup() {
array = new Integer[ARRAY_SIZE];
vArray = new Integer[ARRAY_SIZE];
Arrays.fill(array, 1);
Arrays.fill(vArray, 1);
}
@TearDown
public void cleanup() {
array = new Integer[ARRAY_SIZE];
vArray = new Integer[ARRAY_SIZE];
}
@Benchmark
@BenchmarkMode(Mode.SingleShotTime)
public void doMultiply() {
for (int i = 0; i < array.length; i++) {
array[i] = array[i] * 3;
}
}
@Benchmark
@BenchmarkMode(Mode.SingleShotTime)
public void doVolatileMultiply() {
for (int i = 0; i < vArray.length; i++) {
vArray[i] = vArray[i] * 3;
}
}
}
|