[vector] Why offset for `FloatVector.fromArray()` doesn't matter?
Lev Serebryakov
lev at serebryakov.spb.ru
Mon Mar 25 11:51:12 UTC 2019
I've tried simplest possible benchmark:
@Fork(2)
@Warmup(iterations = 5, time = 2)
@Measurement(iterations = 10, time = 2)
@Threads(1)
@State(org.openjdk.jmh.annotations.Scope.Thread)
public class Offsets {
private final static int MAX_OFFSET = 3;
@Param({"0", "1", "2", "3"})
public int offset;
private FloatVector.FloatSpecies PFS;
private float x[];
@Setup(Level.Trial)
public void Setup() {
PFS = FloatVector.preferredSpecies();
x = new float[PFS.length() + MAX_OFFSET];
for (int i = 0; i < x.length; i++) {
x[i] = (float)(Math.random() * 2.0 - 1.0);
}
}
@Benchmark
public void load(Blackhole bh) {
bh.consume(FloatVector.fromArray(PFS, x, offset));
}
}
And on my simple i5-4570 results are statistically indistinguishable:
"Benchmark","Mode","Threads","Samples","Score","Score Error
(99.9%)","Unit","Param: offset"
"vector.Offsets.load","thrpt",1,20,101208526.657987,507208.244813,"ops/s",0
"vector.Offsets.load","thrpt",1,20,100728106.976688,642531.858346,"ops/s",1
"vector.Offsets.load","thrpt",1,20,101138279.385919,612415.941923,"ops/s",2
"vector.Offsets.load","thrpt",1,20,101107836.257976,653766.103615,"ops/s",3
To be honest, I'm surprised. I've tried turn off compressed oops and set
large objects alignment (16 bytes), it doesn't matter, too
--
// Black Lion AKA Lev Serebryakov
More information about the panama-dev
mailing list