Re-tune entry sizes for segments.

This commit is contained in:
Peter Lawrey
2014-10-27 11:24:15 +00:00
parent 470132d528
commit 412f9def7e
3 changed files with 38 additions and 32 deletions
@@ -404,11 +404,11 @@ public class ChronicleMapBuilder<K, V> implements Cloneable,
private long totalEntriesIfPoorDistribution(int segments) {
if (segments == 1)
return entries;
double poorDistEntriesScale = Math.log(segments) * entries;
if (segments <= 8)
return entries * 13L / 12L; // 6%, (3% was min for tests)
if (segments <= 128)
return entries * 8L / 7L; // 14% (7% was min for tests)
return entries * 6L / 5L; // 20% (10% was min for tests)
return Math.min(entries * segments,
(long) (entries + poorDistEntriesScale * 0.08 + 64)); // 8% was min for tests
return (long) (entries + poorDistEntriesScale * 0.11 + 80); // 11% was min for tests
}
@Override
@@ -903,11 +903,11 @@ public class ChronicleMapBuilder<K, V> implements Cloneable,
private VanillaChronicleMap<K, ?, ?, V, ?, ?> newMap() throws IOException {
preMapConstruction();
if (!useReplication()) {
return new VanillaChronicleMap<K, Object, MetaBytesInterop<K, Object>,
if (useReplication()) {
return new ReplicatedChronicleMap<K, Object, MetaBytesInterop<K, Object>,
V, Object, MetaBytesWriter<V, Object>>(this);
} else {
return new ReplicatedChronicleMap<K, Object, MetaBytesInterop<K, Object>,
return new VanillaChronicleMap<K, Object, MetaBytesInterop<K, Object>,
V, Object, MetaBytesWriter<V, Object>>(this);
}
}
@@ -556,7 +556,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, KI>,
createHashLookups(start);
start += align64(sizeOfMultiMap() + sizeOfMultiMapBitSet()) * multiMapsPerSegment();
final NativeBytes bsBytes = new NativeBytes(tmpBytes.objectSerializer(),
start, start + ((entriesPerSegment + 7) / 8), null);
start, start + align8(align8(entriesPerSegment) / 8L), null);
freeList = new SingleThreadedDirectBitSet(bsBytes);
start += numberOfBitSets() * sizeOfBitSets();
entriesOffset = start - bytes.startAddr();