Add a perf test for acquireUsingLocked.

This commit is contained in:
Peter Lawrey
2014-11-02 23:09:21 +00:00
parent 2e98febfeb
commit 245908baad
4 changed files with 94 additions and 22 deletions
@@ -115,7 +115,7 @@ public abstract class AbstractChronicleMapBuilder<K, V,
private int valueSize = 0;
private V sampleValue;
private int entrySize = 0;
private Alignment alignment;
private Alignment alignment = null;
private long entries = 1 << 20; // 1 million by default
private long lockTimeOut = 2000;
private TimeUnit lockTimeOutUnit = TimeUnit.MILLISECONDS;
@@ -138,10 +138,9 @@ public abstract class AbstractChronicleMapBuilder<K, V,
private StatelessBuilder statelessBuilder;
private File file;
AbstractChronicleMapBuilder(Class<K> keyClass, Class<V> valueClass, Alignment alignment) {
AbstractChronicleMapBuilder(Class<K> keyClass, Class<V> valueClass) {
keyBuilder = new SerializationBuilder<K>(keyClass, SerializationBuilder.Role.KEY);
valueBuilder = new SerializationBuilder<V>(valueClass, SerializationBuilder.Role.VALUE);
this.alignment = alignment;
}
protected static boolean offHeapReference(Class valueClass) {
@@ -318,7 +317,9 @@ public abstract class AbstractChronicleMapBuilder<K, V,
}
Alignment entryAndValueAlignment() {
return alignment;
if (alignment != null)
return alignment;
return offHeapReference(valueBuilder.eClass) ? Alignment.OF_4_BYTES : Alignment.NO_ALIGNMENT;
}
@Override
@@ -73,11 +73,7 @@ public final class ChronicleMapBuilder<K, V>
}
ChronicleMapBuilder(Class<K> keyClass, Class<V> valueClass) {
super(keyClass, valueClass, getAlignmentFor(valueClass));
}
private static <V> Alignment getAlignmentFor(Class<V> valueClass) {
return offHeapReference(valueClass) ? Alignment.OF_4_BYTES : Alignment.NO_ALIGNMENT;
super(keyClass, valueClass);
}
@Override
@@ -37,7 +37,7 @@ public final class OffHeapUpdatableChronicleMapBuilder<K, V>
}
OffHeapUpdatableChronicleMapBuilder(Class<K> keyClass, Class<V> valueClass) {
super(keyClass, valueClass, Alignment.OF_4_BYTES);
super(keyClass, valueClass);
prepareValueBytesOnAcquire(new ZeroOutValueBytes<K, V>(valueSize()));
}
@@ -74,7 +74,7 @@ public final class OffHeapUpdatableChronicleMapBuilder<K, V>
* alignment. I. e. if you set {@code entrySize(20)} and {@link Alignment#OF_8_BYTES}, actual
* entry size will be 24 (20 aligned to 8 bytes).
*
* <p>Default is {@link Alignment#NO_ALIGNMENT}.
* <p>Default is {@link Alignment#OF_4_BYTES} for Byteable values.
*
* @param alignment the new alignment of the maps constructed by this builder
* @return this {@code ChronicleMapBuilder} back