mirror of https://github.com/apache/lucene.git
remove 32 bit case (all our int values are >= 0)
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/pforcodec_3892@1370330 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
36e9b06bd6
commit
ae8787358a
|
@ -42,6 +42,7 @@ public final class BlockPostingsFormat extends PostingsFormat {
|
||||||
private final int minTermBlockSize;
|
private final int minTermBlockSize;
|
||||||
private final int maxTermBlockSize;
|
private final int maxTermBlockSize;
|
||||||
|
|
||||||
|
// nocommit do other block sizes perform better?
|
||||||
public final static int BLOCK_SIZE = 128;
|
public final static int BLOCK_SIZE = 128;
|
||||||
|
|
||||||
public BlockPostingsFormat() {
|
public BlockPostingsFormat() {
|
||||||
|
|
|
@ -168,6 +168,7 @@ public final class BlockPostingsWriter extends PostingsWriterBase {
|
||||||
docDeltaBuffer = new int[BLOCK_SIZE];
|
docDeltaBuffer = new int[BLOCK_SIZE];
|
||||||
freqBuffer = new int[BLOCK_SIZE];
|
freqBuffer = new int[BLOCK_SIZE];
|
||||||
|
|
||||||
|
// nocommit should we try skipping every 2/4 blocks...?
|
||||||
skipWriter = new BlockSkipWriter(maxSkipLevels,
|
skipWriter = new BlockSkipWriter(maxSkipLevels,
|
||||||
BLOCK_SIZE,
|
BLOCK_SIZE,
|
||||||
state.segmentInfo.getDocCount(),
|
state.segmentInfo.getDocCount(),
|
||||||
|
|
|
@ -46,6 +46,7 @@ public final class ForUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i=0; i<blockSize; ++i) {
|
for (int i=0; i<blockSize; ++i) {
|
||||||
|
assert data[i] >= 0;
|
||||||
encodeNormalValue(intBuffer, i, data[i], numBits);
|
encodeNormalValue(intBuffer, i, data[i], numBits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,12 +67,13 @@ public final class ForUtil {
|
||||||
* @param data int array to hold uncompressed data
|
* @param data int array to hold uncompressed data
|
||||||
* @param header header of current block, which contains numFrameBits
|
* @param header header of current block, which contains numFrameBits
|
||||||
*/
|
*/
|
||||||
static void decompress(IntBuffer intBuffer, int[] data, int numBits) {
|
static void decompress(IntBuffer intBuffer, int[] data, int header) {
|
||||||
// since this buffer is reused at upper level, rewind first
|
// since this buffer is reused at upper level, rewind first
|
||||||
intBuffer.rewind();
|
intBuffer.rewind();
|
||||||
|
|
||||||
// nocommit assert header isn't "malformed", ie besides
|
// NOTE: header == numBits now, but we may change that
|
||||||
// numBytes / bit-width there is nothing else!
|
final int numBits = header;
|
||||||
|
assert numBits >=0 && numBits < 32;
|
||||||
decompressCore(intBuffer, data, numBits);
|
decompressCore(intBuffer, data, numBits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +111,7 @@ public final class ForUtil {
|
||||||
case 29: PackedIntsDecompress.decode29(intBuffer, data); break;
|
case 29: PackedIntsDecompress.decode29(intBuffer, data); break;
|
||||||
case 30: PackedIntsDecompress.decode30(intBuffer, data); break;
|
case 30: PackedIntsDecompress.decode30(intBuffer, data); break;
|
||||||
case 31: PackedIntsDecompress.decode31(intBuffer, data); break;
|
case 31: PackedIntsDecompress.decode31(intBuffer, data); break;
|
||||||
case 32: PackedIntsDecompress.decode32(intBuffer, data); break;
|
// nocommit have default throw exc? or add assert up above
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +136,7 @@ public final class ForUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Estimate best num of frame bits according to the largest value.
|
* Returns number of bits necessary to represent max value.
|
||||||
*/
|
*/
|
||||||
static int getNumBits(final int[] data) {
|
static int getNumBits(final int[] data) {
|
||||||
if (isAllEqual(data)) {
|
if (isAllEqual(data)) {
|
||||||
|
@ -147,6 +149,7 @@ public final class ForUtil {
|
||||||
optBits++;
|
optBits++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
assert optBits < 32;
|
||||||
return optBits;
|
return optBits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1766,76 +1766,4 @@ final class PackedIntsDecompress {
|
||||||
outputOffset += 32;
|
outputOffset += 32;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static void decode32(final IntBuffer compressedBuffer, final int[] output) {
|
|
||||||
final int numFrameBits = 32;
|
|
||||||
final int mask = (int) ((1L<<numFrameBits) - 1);
|
|
||||||
int outputOffset = 0;
|
|
||||||
for(int step=0;step<4;step++) {
|
|
||||||
int intValue0 = compressedBuffer.get();
|
|
||||||
int intValue1 = compressedBuffer.get();
|
|
||||||
int intValue2 = compressedBuffer.get();
|
|
||||||
int intValue3 = compressedBuffer.get();
|
|
||||||
int intValue4 = compressedBuffer.get();
|
|
||||||
int intValue5 = compressedBuffer.get();
|
|
||||||
int intValue6 = compressedBuffer.get();
|
|
||||||
int intValue7 = compressedBuffer.get();
|
|
||||||
int intValue8 = compressedBuffer.get();
|
|
||||||
int intValue9 = compressedBuffer.get();
|
|
||||||
int intValue10 = compressedBuffer.get();
|
|
||||||
int intValue11 = compressedBuffer.get();
|
|
||||||
int intValue12 = compressedBuffer.get();
|
|
||||||
int intValue13 = compressedBuffer.get();
|
|
||||||
int intValue14 = compressedBuffer.get();
|
|
||||||
int intValue15 = compressedBuffer.get();
|
|
||||||
int intValue16 = compressedBuffer.get();
|
|
||||||
int intValue17 = compressedBuffer.get();
|
|
||||||
int intValue18 = compressedBuffer.get();
|
|
||||||
int intValue19 = compressedBuffer.get();
|
|
||||||
int intValue20 = compressedBuffer.get();
|
|
||||||
int intValue21 = compressedBuffer.get();
|
|
||||||
int intValue22 = compressedBuffer.get();
|
|
||||||
int intValue23 = compressedBuffer.get();
|
|
||||||
int intValue24 = compressedBuffer.get();
|
|
||||||
int intValue25 = compressedBuffer.get();
|
|
||||||
int intValue26 = compressedBuffer.get();
|
|
||||||
int intValue27 = compressedBuffer.get();
|
|
||||||
int intValue28 = compressedBuffer.get();
|
|
||||||
int intValue29 = compressedBuffer.get();
|
|
||||||
int intValue30 = compressedBuffer.get();
|
|
||||||
int intValue31 = compressedBuffer.get();
|
|
||||||
output[0 + outputOffset] = intValue0;
|
|
||||||
output[1 + outputOffset] = intValue1;
|
|
||||||
output[2 + outputOffset] = intValue2;
|
|
||||||
output[3 + outputOffset] = intValue3;
|
|
||||||
output[4 + outputOffset] = intValue4;
|
|
||||||
output[5 + outputOffset] = intValue5;
|
|
||||||
output[6 + outputOffset] = intValue6;
|
|
||||||
output[7 + outputOffset] = intValue7;
|
|
||||||
output[8 + outputOffset] = intValue8;
|
|
||||||
output[9 + outputOffset] = intValue9;
|
|
||||||
output[10 + outputOffset] = intValue10;
|
|
||||||
output[11 + outputOffset] = intValue11;
|
|
||||||
output[12 + outputOffset] = intValue12;
|
|
||||||
output[13 + outputOffset] = intValue13;
|
|
||||||
output[14 + outputOffset] = intValue14;
|
|
||||||
output[15 + outputOffset] = intValue15;
|
|
||||||
output[16 + outputOffset] = intValue16;
|
|
||||||
output[17 + outputOffset] = intValue17;
|
|
||||||
output[18 + outputOffset] = intValue18;
|
|
||||||
output[19 + outputOffset] = intValue19;
|
|
||||||
output[20 + outputOffset] = intValue20;
|
|
||||||
output[21 + outputOffset] = intValue21;
|
|
||||||
output[22 + outputOffset] = intValue22;
|
|
||||||
output[23 + outputOffset] = intValue23;
|
|
||||||
output[24 + outputOffset] = intValue24;
|
|
||||||
output[25 + outputOffset] = intValue25;
|
|
||||||
output[26 + outputOffset] = intValue26;
|
|
||||||
output[27 + outputOffset] = intValue27;
|
|
||||||
output[28 + outputOffset] = intValue28;
|
|
||||||
output[29 + outputOffset] = intValue29;
|
|
||||||
output[30 + outputOffset] = intValue30;
|
|
||||||
output[31 + outputOffset] = intValue31;
|
|
||||||
outputOffset += 32;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue