Existen varias implementaciones de bitvectors comprimidos disponibles. Por lo general, presentan una codificación de longitud de ejecución junto con las operaciones y/o/xor/no que funcionan en la forma comprimida.
Así que los beneficios son:
- uso del espacio más pequeño (por bitsets dispersos, como en el caso de uso)
- operaciones de bits muy rápido (porque trabajan en las palabras y son mucho más caché de la CPU amigable)
y en el lado negativo:
- acceso más lento bits (iteración necesario para encontrar un poco en una posición específica)
Algunas implementaciones yo sepa (hay otros que estoy seguro):
Fastbit es de hecho una base de datos mediante un índice bitvector. La clase bitvector comprimido se puede utilizar directamente (sin la indexación)
Lemur bitmapindex Otra aplicación de la codificación Ewah introducido por Fastbit
Compressed bitvector by koen.vandamme nunca había probado ... pero sólo dos cabeceras y un archivo CPP. Así que no hay mucho esfuerzo para intentarlo.
Bitmagic Paquete completo que implementa varios bitvectores comprimidos, incluido el soporte de hardware (sse2, ...)
Espero que esto ayude,
Roland
Podría decirnos qué le pasa a bitsets implementaciones de impulso? Eso puede ayudar. – jv42
O incluso lo que está mal con 'std :: bitset'. – casablanca
O más bien, qué funcionalidad requiere que no se proporcione. –