Question

devrait être facile.

Je travaille sur Scala en essayant de gérer de longues séquences de données binaires. C'est une longue liste de 0 et de 1. Quel est le moyen de stocker / accès « meilleur » ce genre de données.

Le point important est l'optimisation de la mémoire ici, donc je voudrais éviter d'utiliser un octet entier pour stocker une valeur booléenne. Accès est somwhat importante, donc je voudrais éviter les paking en octets, puis dans les tableaux.

est un BitMap une bonne idée? Y at-il une telle classe scala?

sinon, serait-il préférable d'utiliser ByteArray? Comment voulez-vous mettre en œuvre cette?

D'autres idées?

Merci,

Était-ce utile?

La solution

Vous pouvez utiliser java.util.BitSet (peut-être avec un couple si habile explicit pour le rendre plus Scala comme).

Si cela est encore trop coûteuse Je voudrais écrire une classe qui utilise un tableau interne et emballer les bits dans ints ou octets.

Autres conseils

Si vos valeurs ne sont pas uniformément réparties ont (0s beaucoup plus que 1 s) que vous pouvez utiliser -longueur codage pour coder les données d'image. Ce codage est utilisé par fax.

Il existe deux options d'encodage:

  • utilisation RLE pour le noir et blanc
  • utilisez uniquement RLE pour une couleur et d'utiliser un encodage direct si vous encodez l'autre couleur (ou sections mixtes)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top