Hm...: arraylist<String[]> als xml speichern führt zu laufzeitproblemen

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

  1. 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?

  2. 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

    --
    If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
    1. 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>>

      1. 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

        --
        If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
        1. danke, ich habs als txt datei gespeichert, so funktioniert das ganze in unter einer minute.