You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2014/12/15 18:12:20 UTC
svn commit: r1643075 - in /lucene/dev/trunk/lucene: CHANGES.txt
core/src/java/org/apache/lucene/codecs/compressing/CompressionMode.java
Author: rmuir
Date: Wed Dec 3 10:09:14 2014
New Revision: 1643075
URL: http://svn.apache.org/r1643075
Log:
LUCENE-6090: use raw deflate stream for CompressionMode.HIGH_COMPRESSION
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressionMode.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1643075&r1=1643074&r2=1643075&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Wed Dec 3 10:09:14 2014
@@ -117,6 +117,9 @@ New Features
* LUCENE-6077: Added a filter cache. (Adrien Grand, Robert Muir)
+* LUCENE-6089, LUCENE-6090: Tune CompressionMode.HIGH_COMPRESSION for
+ better compression and less cpu usage. (Adrien Grand, Robert Muir)
+
API Changes
* LUCENE-5900: Deprecated more constructors taking Version in *InfixSuggester and
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressionMode.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressionMode.java?rev=1643075&r1=1643074&r2=1643075&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressionMode.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressionMode.java Wed Dec 3 10:09:14 2014
@@ -186,7 +186,7 @@ public abstract class CompressionMode {
byte[] compressed;
DeflateDecompressor() {
- decompressor = new Inflater();
+ decompressor = new Inflater(true);
compressed = new byte[0];
}
@@ -198,13 +198,18 @@ public abstract class CompressionMode {
return;
}
final int compressedLength = in.readVInt();
- if (compressedLength > compressed.length) {
- compressed = new byte[ArrayUtil.oversize(compressedLength, 1)];
+ // pad with extra "dummy byte": see javadocs for using Inflater(true)
+ // we do it for compliance, but its unnecessary for years in zlib.
+ final int paddedLength = compressedLength + 1;
+ if (paddedLength > compressed.length) {
+ compressed = new byte[ArrayUtil.oversize(paddedLength, 1)];
}
in.readBytes(compressed, 0, compressedLength);
+ compressed[compressedLength] = 0; // explicitly set dummy byte to 0
decompressor.reset();
- decompressor.setInput(compressed, 0, compressedLength);
+ // extra "dummy byte"
+ decompressor.setInput(compressed, 0, paddedLength);
bytes.offset = bytes.length = 0;
while (true) {
@@ -242,7 +247,7 @@ public abstract class CompressionMode {
byte[] compressed;
DeflateCompressor(int level) {
- compressor = new Deflater(level);
+ compressor = new Deflater(level, true);
compressed = new byte[64];
}