Platzsparende Speicherung eines Vektors
tomgk
- java
Hallo!
Ich hab eine Klasse, die von Vector abgeleitet ist.
Die Werte speichere ich mit out.writeObject(v.toArray()) in einer Datei.
Wenn der Vektor aus 100 Byte-Werten besteht ist die Datei 676 Bytes groß.
Lege ich die Werte in ein byte-Array, dann ist die Datei nur 106 Bytes groß.
Was kann man machen, dass bei Typen wie Byte,Short,Integer,...-Array ein Array aus einem primitiven Datentyp gespeichert wird?
MfG
tomgk
hi,
Was kann man machen, dass bei Typen wie Byte,Short,Integer,...-Array ein Array aus einem primitiven Datentyp gespeichert wird?
Falls mySQL: 106 Byte -entspricht-> char(106) in der Latin-Zeichenfamilie (Tagging beachten). Ansonsten sind in solchen Sachen Bitoperatoren (shift, &, | ...) sehr hilfreich.
Hotte
Hello,
Wenn der Vektor aus 100 Byte-Werten besteht ist die Datei 676 Bytes groß.
Lege ich die Werte in ein byte-Array, dann ist die Datei nur 106 Bytes groß.
Den Platzbdedarf für den Vektor kann man fast nachrechnen, ohne reinzugucken in den Code.
4 Bytes für die Adressierung jedes Elementes
1 Byte für die Daten jedes Elementes
4 Bytes für die Adressierung jeder Liste
1. Liste beim Aufbau des Vektors mit 16 Elementen
und dann immer pro Verdoppelung der Elemente eine neue Liste
macht
9 Listen 36
128 Elemente 128
128 Adressen 512
----
676
*huch*
Das es so genau stimmt, hätte ich jetzt nicht gedacht ;-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
9 Listen 36
Sorry, da stimmt es nicht, denn es sind nur vier Listenteile, aber vielleicht sind die vorwärts und rückwärts verkettet.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg