2010-10-29 14 views
5

Hola todos, Estoy buscando una buena biblioteca, que funcione con bitsets o bitarrays. Alguien sabe algo mejor (o no es peor en todos los casos) y luego boost :: dynamic_bitset? No importa si la biblioteca es de código abierto o comercial.Buena biblioteca para bitsets o bitarrays

En mi proyecto, es una tarea común almacenar y trabajar con máscaras de bits grandes, que contienen menos número de unidades. Para que puedan comprimirse bien en la memoria.

+0

Podría decirnos qué le pasa a bitsets implementaciones de impulso? Eso puede ayudar. – jv42

+0

O incluso lo que está mal con 'std :: bitset'. – casablanca

+1

O más bien, qué funcionalidad requiere que no se proporcione. –

Respuesta

0

¿Qué tal las librerías MiniSAT?

http://minisat.se/

Recuerdo que esto tenga una implementación simple para matrices de bits.

0

Si todo lo que busca es la optimización del espacio, entonces std :: vector proporciona una especialización vectorial que está optimizada para el espacio.

http://www.cplusplus.com/reference/stl/vector/

y C++ estándar 23.2.5

ni idea de si esto es mejor que la del refuerzo: dynamic_bitset, pero vale la pena investigar si aún no lo ha mirado en él.

6

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

Cuestiones relacionadas