arraylist<String[]> als xml speichern führt zu laufzeitproblemen
Hm...
- java
hi,
ich habe eine arraylist<String[]> als mxl gespeichert, das ding hat 250mb.
das auslesen dieser liste dauert allerdings gut 10 minuten, so dass ich schneller wäre, wenn ich das teil als text datei speichern und dann in arraylist<String[]> form bringen würde.
ich würde gerne innerhalb von 1-2 minuten auf diese datei zugreifen, könnt ihr mir einen tipp geben, welches datenformat hierfür geeignet wäre?
mfg
ich werde aus arraylist<String[]> erstmal arraylist<arraylist<String>> machen
wäre viel besser, wenn ich direkt zahlen statt string einsetzen würde? zb int?
ich würde gerne innerhalb von 1-2 minuten auf diese datei zugreifen, könnt ihr mir einen tipp geben, welches datenformat hierfür geeignet wäre?
So ganz ohne weitere Information? Nö.
"Ich habe hier ein 1.5t schweres Fahrzeug, dass braucht von 0km/h auf 100km/h 23 Sekunden, möchte es aber in 7 Sekunden schaffen. Welches Getriebe ist dafür geeignet?"
Brauchst du denn alle Strings zur gleichen Zeit?
Haben alle Strings vom Typ her die gleiche Information?
Was willst du denn im großen und ganzen machen? Bei 250MB im Speicher wird dir ja bald der Heap der JVM aus allen Nähten platzen.
MfG
bubble
Brauchst du denn alle Strings zur gleichen Zeit?
Haben alle Strings vom Typ her die gleiche Information?
hm, eigendlich brauche ich immer nur die daten eines tages.
arraylist<String[]> list ist:
list.get(i) <- zeile i mit string[] der länge 5
Was willst du denn im großen und ganzen machen? Bei 250MB im Speicher wird dir ja bald der Heap der JVM aus allen Nähten platzen.
ich möchte immer den nächsten tag aus der liste einlesen, dann sind dann k viele zeilen (list.get(i) k-mal, k ist von tag zu tag variable)
ich habe 16 gb arbeitsspeicher, daher würde ich gerne die ganze tabelle in den arbeisspeicher laden.
das format der tabelle ändere ich gerade testhalber auf arraylist<arraylist<string>>
hm, eigendlich brauche ich immer nur die daten eines tages.
arraylist<String[]> list ist:
list.get(i) <- zeile i mit string[] der länge 5
Da kann man also schon mal den Tag als Index nehmen.
Ich würde - je nach genauer Struktur/Erweiterbarkeit - wohl entweder ein eigenes simples Dateiformat implementieren oder auf eine SQLite-Datenbank zurück greifen.
Das dann in Verbindung mit Lazy Loading sollte eigentlich reichen. Es ließt wahrscheinlich langsamer, aber dafür nur das was es braucht, ob du die Daten dann im Arbeitsspeicher verrotten lässt oder wieder frei gibst, oder nach einer Weile wieder freigibst sei dann dir überlassen.
Multithreading könnte man da auch noch dazu mogeln, so dass, wenn dein Programm grade am Verarbeiten der Daten ist und nichts selbst laden muss ein weiterer Thread fröhlich vor sich hin lädt.
XML sollte dafür definitiv das falsche Format sein.
MfG
bubble
danke, ich habs als txt datei gespeichert, so funktioniert das ganze in unter einer minute.