Clean up duplicate constants in trunk (3.x variant and a new one from trunk, unified to 3.x version). Also found one more ArrayUtil.grow-use-case

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1044854 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Uwe Schindler 2010-12-12 17:10:39 +00:00
parent da38e95b4c
commit 3da3f2fad2
4 changed files with 10 additions and 18 deletions

View File

@ -48,19 +48,19 @@ class SegmentDeletes {
Term's text is String (OBJ_HEADER + 4*INT + POINTER + Term's text is String (OBJ_HEADER + 4*INT + POINTER +
OBJ_HEADER + string.length*CHAR). Integer is OBJ_HEADER + string.length*CHAR). Integer is
OBJ_HEADER + INT. */ OBJ_HEADER + INT. */
final static int BYTES_PER_DEL_TERM = 8*RamUsageEstimator.NUM_BYTES_OBJ_REF + 5*RamUsageEstimator.NUM_BYTES_OBJ_HEADER + 6*RamUsageEstimator.NUM_BYTES_INT; final static int BYTES_PER_DEL_TERM = 8*RamUsageEstimator.NUM_BYTES_OBJECT_REF + 5*RamUsageEstimator.NUM_BYTES_OBJECT_HEADER + 6*RamUsageEstimator.NUM_BYTES_INT;
/* Rough logic: del docIDs are List<Integer>. Say list /* Rough logic: del docIDs are List<Integer>. Say list
allocates ~2X size (2*POINTER). Integer is OBJ_HEADER allocates ~2X size (2*POINTER). Integer is OBJ_HEADER
+ int */ + int */
final static int BYTES_PER_DEL_DOCID = 2*RamUsageEstimator.NUM_BYTES_OBJ_REF + RamUsageEstimator.NUM_BYTES_OBJ_HEADER + RamUsageEstimator.NUM_BYTES_INT; final static int BYTES_PER_DEL_DOCID = 2*RamUsageEstimator.NUM_BYTES_OBJECT_REF + RamUsageEstimator.NUM_BYTES_OBJECT_HEADER + RamUsageEstimator.NUM_BYTES_INT;
/* Rough logic: HashMap has an array[Entry] w/ varying /* Rough logic: HashMap has an array[Entry] w/ varying
load factor (say 2 * POINTER). Entry is object w/ load factor (say 2 * POINTER). Entry is object w/
Query key, Integer val, int hash, Entry next Query key, Integer val, int hash, Entry next
(OBJ_HEADER + 3*POINTER + INT). Query we often (OBJ_HEADER + 3*POINTER + INT). Query we often
undercount (say 24 bytes). Integer is OBJ_HEADER + INT. */ undercount (say 24 bytes). Integer is OBJ_HEADER + INT. */
final static int BYTES_PER_DEL_QUERY = 5*RamUsageEstimator.NUM_BYTES_OBJ_REF + 2*RamUsageEstimator.NUM_BYTES_OBJ_HEADER + 2*RamUsageEstimator.NUM_BYTES_INT + 24; final static int BYTES_PER_DEL_QUERY = 5*RamUsageEstimator.NUM_BYTES_OBJECT_REF + 2*RamUsageEstimator.NUM_BYTES_OBJECT_HEADER + 2*RamUsageEstimator.NUM_BYTES_INT + 24;
// TODO: many of the deletes stored here will map to // TODO: many of the deletes stored here will map to
// Integer.MAX_VALUE; we could be more efficient for this // Integer.MAX_VALUE; we could be more efficient for this

View File

@ -433,7 +433,7 @@ public final class ArrayUtil {
public static <T> T[] grow(T[] array, int minSize) { public static <T> T[] grow(T[] array, int minSize) {
if (array.length < minSize) { if (array.length < minSize) {
@SuppressWarnings("unchecked") final T[] newArray = @SuppressWarnings("unchecked") final T[] newArray =
(T[]) Array.newInstance(array.getClass().getComponentType(), oversize(minSize, RamUsageEstimator.NUM_BYTES_OBJ_REF)); (T[]) Array.newInstance(array.getClass().getComponentType(), oversize(minSize, RamUsageEstimator.NUM_BYTES_OBJECT_REF));
System.arraycopy(array, 0, newArray, 0, array.length); System.arraycopy(array, 0, newArray, 0, array.length);
return newArray; return newArray;
} else } else
@ -445,7 +445,7 @@ public final class ArrayUtil {
} }
public static <T> T[] shrink(T[] array, int targetSize) { public static <T> T[] shrink(T[] array, int targetSize) {
final int newSize = getShrinkSize(array.length, targetSize, RamUsageEstimator.NUM_BYTES_OBJ_REF); final int newSize = getShrinkSize(array.length, targetSize, RamUsageEstimator.NUM_BYTES_OBJECT_REF);
if (newSize != array.length) { if (newSize != array.length) {
@SuppressWarnings("unchecked") final T[] newArray = @SuppressWarnings("unchecked") final T[] newArray =
(T[]) Array.newInstance(array.getClass().getComponentType(), newSize); (T[]) Array.newInstance(array.getClass().getComponentType(), newSize);

View File

@ -18,7 +18,6 @@ package org.apache.lucene.util;
*/ */
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import static org.apache.lucene.util.RamUsageEstimator.NUM_BYTES_OBJECT_REF;
/** /**
* Class that Posting and PostingVector use to write byte * Class that Posting and PostingVector use to write byte
@ -117,12 +116,7 @@ public final class ByteBlockPool {
} }
public void nextBuffer() { public void nextBuffer() {
if (1+bufferUpto == buffers.length) { buffers = ArrayUtil.grow(buffers, 2+bufferUpto);
byte[][] newBuffers = new byte[ArrayUtil.oversize(buffers.length+1,
NUM_BYTES_OBJECT_REF)][];
System.arraycopy(buffers, 0, newBuffers, 0, buffers.length);
buffers = newBuffers;
}
buffer = buffers[1+bufferUpto] = allocator.getByteBlock(); buffer = buffers[1+bufferUpto] = allocator.getByteBlock();
bufferUpto++; bufferUpto++;

View File

@ -43,9 +43,10 @@ public final class RamUsageEstimator {
public final static int NUM_BYTES_LONG = 8; public final static int NUM_BYTES_LONG = 8;
public final static int NUM_BYTES_FLOAT = 4; public final static int NUM_BYTES_FLOAT = 4;
public final static int NUM_BYTES_DOUBLE = 8; public final static int NUM_BYTES_DOUBLE = 8;
public final static int NUM_BYTES_OBJ_HEADER = 8; public final static int NUM_BYTES_CHAR = 2;
public final static int NUM_BYTES_OBJ_REF = Constants.JRE_IS_64BIT ? 8 : 4; public final static int NUM_BYTES_OBJECT_HEADER = 8;
public final static int NUM_BYTES_ARRAY_HEADER = NUM_BYTES_OBJ_HEADER + NUM_BYTES_INT + NUM_BYTES_OBJ_REF; public final static int NUM_BYTES_OBJECT_REF = Constants.JRE_IS_64BIT ? 8 : 4;
public final static int NUM_BYTES_ARRAY_HEADER = NUM_BYTES_OBJECT_HEADER + NUM_BYTES_INT + NUM_BYTES_OBJECT_REF;
private MemoryModel memoryModel; private MemoryModel memoryModel;
@ -55,9 +56,6 @@ public final class RamUsageEstimator {
private int arraySize; private int arraySize;
private int classSize; private int classSize;
public final static int NUM_BYTES_OBJECT_REF = Constants.JRE_IS_64BIT ? 8 : 4;
public final static int NUM_BYTES_CHAR = 2;
private boolean checkInterned; private boolean checkInterned;
/** /**