Stefan Hundhammer schrieb:
On Monday 20 October 2003 17:11, Bastian Schern wrote:
Ich wollte schon gerne den genau die Bits in ein File schreiben. Sonst bräuchte ich ja 8 mal so viel Platz. Das sind bei ca. 100 MB dann schon 800 MB. Die Reihenfolge spielt nicht eine so große Rolle, da ich das File in der gleichen Reihenfolge wieder auslese.
Wenn Du ein bißchen mehr über die Anwendung verrätst und natürlich die zu erwartende Datenmenge, wird es ein bißchen einfacher, Hilfestellung zu geben. ;-)
Jedes Bit in dem File repräsentiert eine Randomzahl. Beispiel: Ich benötige z.B. 2 Zahlen zwischen 0 und 7, dann erhalte vielleicht 2 und 5. Dazu setze ich jetzt einfach Bit 2 und 5 in meinem Bitset auf true und erhalte somit 001001000. Man könnte sich jetzt natürlich auch einfach 2 und 5 in einem vector<int> merken, dafür benötige ich dann aber schon 2*4 Byte Platz. In der Praxis werden es wahrscheinlich 100*10^6 Zufallszahlen sein. Also ca. 100MB im Bitset bzw. 3,2GB im Vector. Das macht dann schon einen erheblichen Unterschied. Ein Bitweises Seeken ist nicht nötig. Es wird höchstens am Ende schwierig, wenn 1 bis 7 Bytes übrig sind. Da ich mir allerdings noch ca. 1000 dieser Files anlegen möchte kann ich nicht mal die 100 MB im Speicher halten. Ich habe mir dann gedacht, dass ich dann immer jeweils nur 1000 Byte aus einem Bitset im Speicher behalte und die Bitsetfiles dann sequentiell in 1000 Byte-Schritten abarbeite. Viele Grüße Bastian