package org.linaro.benchmarks; import org.openjdk.jmh.annotations.*; import java.util.concurrent.TimeUnit; @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MICROSECONDS) @State(Scope.Benchmark) public class ArrObj { public class LongLD { public int z; public long x1; public long x2; public LongLD(long v1, long v2, int v3) { this.x1 = v1; this.x2 = v2; this.z = v3; } } public long case_long_ld_01(LongLD obj) { if (obj.z < 0) { return 3; } else { return obj.x1 + obj.x2; } } static int sz = 999; LongLD [] objs; @Setup public void init() { objs = new LongLD[sz]; for (int i = 0; i < sz; i++) { objs[i] = new LongLD(i+1, i+2, i+3); } } @Benchmark public long testArrObjCopy() { long sum = 0; for (int i = 0; i < sz; i++) { sum += case_long_ld_01(objs[i]); } return sum; } }