sdsl-lite
sdsl-lite copied to clipboard
make parameter k in k2 tree completely constant
This enables the compiler to optimize for k values which are a power of two, getting rid of expensive div and imul instructions. Many loops get unrolled as well.
The private member variable k_k was preventing it as k_k is not constant, e.g., loading from istream sets it. This is also the only "lost" functionality, unserialize from a file without knowing the value k before. All other assignments, like in copy-ctor and operator=(), don't make any sense as one can only call them with the same type which implies the same k.