2010-10-29 13 views
5

Ciao a tutti, Sto cercando una buona libreria, che funzioni con bitset o bitarray. Qualcuno sa qualcosa di meglio (o non peggio in tutti i casi) quindi boost :: dynamic_bitset? Non importa se la biblioteca è open source o commerciale.Buona libreria per bitset o bitarray

Nel mio progetto è un compito comune archiviare e lavorare con maschere a bit di grandi dimensioni, che ne contengono meno. Quindi potrebbero essere compressi bene nella memoria.

+0

Puoi dirci che cosa c'è di sbagliato con bitsets implementazioni di spinta? Sarebbe utile. – jv42

+0

O anche cosa c'è che non va con 'std :: bitset'. – casablanca

+1

O meglio, quali funzionalità richiedono che non siano fornite. –

risposta

0

Se tutto ciò che stai cercando è l'ottimizzazione dello spazio, quindi std :: vector offre una specializzazione vettoriale ottimizzata per lo spazio.

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

e C++ standard di 23.2.5

Non ho idea se questo è meglio di spinta: dynamic_bitset, ma vale la pena indagare se non l'avete già guardato dentro.

6

Sono disponibili diverse implementazioni di bitvector compressi. Di solito presentano una codifica della durata della corsa insieme a e/o/xor/non operazioni che funzionano sul modulo compresso.

Così i benefici sono:

  • minore utilizzo dello spazio (per bitsets sparse, come nel tuo caso d'uso)
  • operazioni bit molto veloci (perché lavorano di parole e sono molto più cache della CPU amichevole)

e verso il basso:

  • più lento di accesso bit (iterazione necessario per trovare un po ' in una posizione specifica)

Alcune implementazioni Sono consapevole di (ce ne sono altri che sono sicuro):

Fastbit è infatti un database utilizzando un indice Bitvector. La classe bitvector compressa può essere utilizzato direttamente (senza l'indicizzazione)

Lemur bitmapindex Un'altra implementazione della codifica EWAH introdotto da FastBIT

Compressed bitvector by koen.vandamme Mai provato ... ma solo due intestazioni e un file cpp. Quindi non c'è molto da fare per provarlo.

Bitmagic Pacchetto completo che implementa più bitvector compressi incluso supporto hardware (sse2, ...)


Spero che questo aiuti,

Roland

Problemi correlati