-
Notifications
You must be signed in to change notification settings - Fork 15
New Features
tb38 edited this page Aug 30, 2012
·
3 revisions
- Modern CPUs today support advanced operations on 64bit words (along with the SSE4.2 instruction set). Like counting the number of set bits or get the leftmost/rightmost set bit in a word. This operations help to speed-up succinct data structures. If you compile your code with g++ (version >= 4.3) and your CPU support SSE4.2 then you can add the flag
-msse4.2
and you get the maximum speed out of the sdsl. For example answering rank with the rank_support_v class will be about 30-40% faster. - You are looking for a 64bit implementation for very sparse bit vectors (i.e. the SD array)? Then the class sd_vector is exactly what you are searching. And the best thing: This implementation even uses less space then the original one, since we use a smaller select data structure for the dense bit vector.
- You need a 64bit implementation that compressed the bit vectors to its zeroth order entropy i.e the representation of Raman, Raman and Rao? Then we have one classes for this:
rrr_vector<block_size>
. The parameterblock_size
can be used to get different time space trade-offs. Values between 7 and 256 are supported by the current implementation ofrrr_vector
. The runtime of the access operation (i.e.operator[]
) depend linearly onblock_size
. A smaller value forblock_size
results in less space usage but longer runtimes for the access operation. There is on exemption: We provide a specialisation forblock_size=15
which is about double as fast asblock_size=16
. We will a figure which shows the runtime of the operation as function of theblock_size
in the near future.