Permalink
Browse files

Preparing new release

  • Loading branch information...
1 parent 60351c5 commit 629577a3243c4361f09295e5e3389a86eb242586 @lemire committed Feb 15, 2014
View
@@ -1,3 +1,7 @@
+0.0.11 (Feb. 14th 2014)
+ - Fix rare bug in FastPFOR (reported by Stefan Ackermann (https://github.com/Stivo))
+ - Improved API documentation
+
0.0.10 (Jan. 25th 2014)
- cleaning the code and improving the documentation
@@ -8,9 +8,30 @@
/**
* Scheme based on a commonly used idea: can be extremely fast.
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ *
+ * <pre>IntegerCODEC ic =
+ * new Composition(new BinaryPacking(), new VariableByte()).</pre>
*
* Note that this does not use differential coding: if you are working on sorted
* lists, use IntegratedBinaryPacking instead.
+ *
+ * <p>
+ * For details, please see
+ * </p>
+ * <p>
+ * Daniel Lemire and Leonid Boytsov, Decoding billions of integers per second
+ * through vectorization Software: Practice &amp; Experience
+ * http://onlinelibrary.wiley.com/doi/10.1002/spe.2203/abstract
+ * http://arxiv.org/abs/1209.2137
+ * </p>
+ * <p>
+ * Daniel Lemire, Leonid Boytsov, Nathan Kurz,
+ * SIMD Compression and the Intersection of Sorted Integers
+ * http://arxiv.org/abs/1401.6399
+ * </p>
*
* @author Daniel Lemire
*/
@@ -8,6 +8,13 @@
/**
* BinaryPacking with Delta+Zigzag Encoding.
*
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ *
+ * <pre>IntegerCODEC ic = new Composition(new DeltaZigzagBinaryPacking(),
+ * new DeltaZigzagVariableByte()).</pre>
+ *
* @author MURAOKA Taro http://github.com/koron
*/
public final class DeltaZigzagBinaryPacking implements IntegerCODEC {
@@ -11,6 +11,11 @@
/**
* This is a patching scheme designed for speed.
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ *
+ * IntegerCODEC ic = new Composition(new FastPFOR(), new VariableByte()).
* <p/>
* For details, please see
* <p/>
@@ -189,7 +194,7 @@ private void encodePage(int[] in, IntWrapper inpos, int thissize,
bitmap |= (1 << (k - 1));
}
out[tmpoutpos++] = bitmap;
- for (int k = 1; k <= 31; ++k) {
+ for (int k = 1; k <= 32; ++k) {
if (dataPointers[k] != 0) {
out[tmpoutpos++] = dataPointers[k];// size
for (int j = 0; j < dataPointers[k]; j += 32) {
@@ -242,7 +247,7 @@ private void decodePage(int[] in, IntWrapper inpos, int[] out,
inexcept += bytesize / 4;
final int bitmap = in[inexcept++];
- for (int k = 1; k <= 31; ++k) {
+ for (int k = 1; k <= 32; ++k) {
if ((bitmap & (1 << (k - 1))) != 0) {
int size = in[inexcept++];
if (dataTobePacked[k].length < size)
@@ -13,6 +13,29 @@
* You should only use this scheme on sorted arrays. Use BinaryPacking if you
* have unsorted arrays.
*
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ *
+ * <pre>IntegratedIntegerCODEC is =
+ * new IntegratedComposition(new IntegratedBinaryPacking(),
+ * new IntegratedVariableByte())</pre>
+ *
+ * <p>
+ * For details, please see
+ * </p>
+ * <p>
+ * Daniel Lemire and Leonid Boytsov, Decoding billions of integers per second
+ * through vectorization Software: Practice &amp; Experience
+ * http://onlinelibrary.wiley.com/doi/10.1002/spe.2203/abstract
+ * http://arxiv.org/abs/1209.2137
+ * </p>
+ * <p>
+ * Daniel Lemire, Leonid Boytsov, Nathan Kurz,
+ * SIMD Compression and the Intersection of Sorted Integers
+ * http://arxiv.org/abs/1401.6399
+ * </p>
+ *
* @author Daniel Lemire
*
*/
@@ -15,6 +15,13 @@
* differential coding as part of the compression.
* </p>
*
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ * <pre>IntegratedIntegerCODEC is =
+ * new IntegratedComposition(new IntegratedFastPFOR(),
+ * new IntegratedVariableByte())</pre>
+ *
* <p>
* For details, please see
* </p>
@@ -25,6 +32,11 @@
* http://arxiv.org/abs/1209.2137
* </p>
* <p>
+ * Daniel Lemire, Leonid Boytsov, Nathan Kurz,
+ * SIMD Compression and the Intersection of Sorted Integers
+ * http://arxiv.org/abs/1401.6399
+ * </p>
+ * <p>
* For multi-threaded applications, each thread should use its own
* IntegratedFastPFOR object.
* </p>
@@ -199,7 +211,7 @@ private void encodePage(int[] constin, IntWrapper constinpos,
bitmap |= (1 << (k - 1));
}
out[tmpoutpos++] = bitmap;
- for (int k = 1; k <= 31; ++k) {
+ for (int k = 1; k <= 32; ++k) {
if (dataPointers[k] != 0) {
out[tmpoutpos++] = dataPointers[k];// size
for (int j = 0; j < dataPointers[k]; j += 32) {
@@ -253,7 +265,7 @@ private void decodePage(int[] in, IntWrapper inpos, int[] out,
inexcept += bytesize / 4;
final int bitmap = in[inexcept++];
- for (int k = 1; k <= 31; ++k) {
+ for (int k = 1; k <= 32; ++k) {
if ((bitmap & (1 << (k - 1))) != 0) {
int size = in[inexcept++];
if (dataTobePacked[k].length < size)
@@ -16,7 +16,6 @@
* You should only use this scheme on sorted arrays. Use VariableByte if you
* have unsorted arrays.
*
- *
* @author Daniel Lemire
*/
public class IntegratedVariableByte implements IntegratedIntegerCODEC,
@@ -17,6 +17,13 @@
* <p/>
* using Simple16 as the secondary coder.
*
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ *
+ * <pre>IntegerCODEC ic =
+ * new Composition(new NewPDF(), new VariableByte()).</pre>
+ *
* Note that this does not use differential coding: if you are working on sorted
* lists, you must compute the deltas separately. (Yes, this is true even though
* the "D" at the end of the name probably stands for delta.)
@@ -17,6 +17,13 @@
* <p/>
* using Simple16 as the secondary coder.
*
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ *
+ * <pre>IntegerCODEC ic =
+ * new Composition(new PDFS16(), new VariableByte()).</pre>
+ *
* Note that this does not use differential coding: if you are working on sorted
* lists, you must compute the deltas separately.
*
@@ -17,6 +17,12 @@
* <p/>
* using Simple9 as the secondary coder.
*
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ *
+ * <pre>IntegerCODEC ic = new Composition(new PDFS9(), new VariableByte()).</pre>
+ *
* Note that this does not use differential coding: if you are working on sorted
* lists, you must compute the deltas separately.
*
@@ -16,6 +16,12 @@
* <p/>
* using Simple16 as the secondary coder.
*
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ *
+ * <pre>IntegerCODEC ic = new Composition(new OptPFD(), new VariableByte()).</pre>
+ *
* Note that this does not use differential coding: if you are working on sorted
* lists, you must compute the deltas separately. (Yes, this is true even though
* the "D" at the end of the name probably stands for delta.)
@@ -17,6 +17,12 @@
* <p/>
* using Simple16 as the secondary coder.
*
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ *
+ * <pre>IntegerCODEC ic = new Composition(new OptPFDS16(), new VariableByte()).</pre>
+ *
* Note that this does not use differential coding: if you are working on sorted
* lists, you must compute the deltas separately.
*
@@ -17,6 +17,11 @@
* <p/>
* using Simple9 as the secondary coder.
*
+ * It encodes integers in blocks of 128 integers. For arrays containing
+ * an arbitrary number of integers, you should use it in conjunction
+ * with another CODEC:
+ *
+ * <pre> IntegerCODEC ic = new Composition(new OptPFDS9(), new VariableByte()).</pre>
*
* Note that this does not use differential coding: if you are working on sorted
* lists, you must compute the deltas separately.
@@ -5,7 +5,10 @@
package me.lemire.integercompression;
/**
- * XOR + BinaryPacking.
+ * BinaryPacking over XOR differential.
+ *
+ * <pre>IntegratedIntegerCODEC is =
+ * new Composition(new XorBinaryPacking(), new VariableByte())</pre>
*
* @author MURAOKA Taro http://github.com/koron
*/
Oops, something went wrong.

0 comments on commit 629577a

Please sign in to comment.