Compressed bitmaps have been long used in computer science and today it seems they conquer more and more fields of networking. The goal of this paper is to provide fast combinatorial unranking implementations for use in bitmap data compression. Within this context, unranking refers to the operation of obtaining a bit vector given its rank in a particular enumeration of all bit vectors of the same size with respect to a given order. Easily, the simplest way to accomplish this task is to use a lookup table. However, for large block sizes such a table may not fit into the memory. Efficient combinatorial unranking algorithms, which eliminate large lookup tables, are therefore essential in practice. Taking the textbook combinatorial unranking schemes, in this paper we develop very fast combinatorial unranking implementations and we introduce a comprehensive performance evaluation and profiling toolkit to measure their efficiency. Our benchmarks show that our optimized implementations improve the performance of the naive combinatorial unranking implementations by 39 %, almost attaining the performance of simple lookup tables.
[1]
Rajeev Raman,et al.
Succinct indexable dictionaries with applications to encoding k-ary trees, prefix sums and multisets
,
2007,
ACM Trans. Algorithms.
[2]
Frank Ruskey,et al.
The coolest way to generate combinations
,
2009,
Discret. Math..
[3]
Donald Ervin Knuth,et al.
The Art of Computer Programming
,
1968
.
[4]
Gonzalo Navarro,et al.
Dynamic entropy-compressed sequences and full-text indexes
,
2006,
TALG.
[5]
Donald E. Knuth,et al.
The Art of Computer Programming: Combinatorial Algorithms, Part 1
,
2011
.
[6]
Ratko V. Tomic.
Quantized Indexing: Background Information *
,
2005
.