1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Objekte oder nicht (für Performance)

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von andi-03, 22.03.2011.

  1. andi-03, 22.03.2011 #1
    andi-03

    andi-03 Threadstarter Junior Mitglied

    Beiträge:
    32
    Erhaltene Danke:
    0
    Registriert seit:
    14.01.2011
    Guten Tag,

    ich bin etwas unentschlossen:
    Ich habe mehrere Einträge, die in einer Liste angezeigt, verändert und erweitert werden können. Jeder Eintrag hat vier Attribute (Titel, Beschreibung, ...). Alle Daten sind in einer Datenbank gespeichert.
    In Java würde ich die Einträge nach dem Auslesen aus der DB sofort in eine ArrayList von Objekten packen, aber bei Android sollen ja unnötig viele Objekte vermieden werden, die nur den Speicherbedarf in die Höhe treiben. Allerdings wird dann die Performance durch mehr DB-Zugriffe, als bei der Objektlösung reduziert. V.a. bei der Sortierung der Liste, erscheinen mir Objekte sinnvoll.
    Welches ist das geringere Übel? Ich tippe mal auf die Nur-DB-Lösung, bin aber auf andere Meinungen gespannt.

    Vielen Dank!
     
  2. swordi, 22.03.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja je nachdem wie viele einträge deine list hat. objekte anlegen ist aber schon sehr teuer, da hast du recht

    bzgl sortierung: das sollte die db für dich machen. ist glaub ich besser, als wenn du die objekte umsortierst.
     
    andi-03 bedankt sich.
  3. the_alien, 22.03.2011 #3
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Kommt immer darauf an wieviele Objekte es sind.
    Bei der XBMC Remote wird zum Beispiel für jeden Film ein Objekt erstellt und selbst bei den 300+ Filmen in der Datenbank eines Freundes geht das in ner Sekunde.
    Wenn alles sowieso schon in der SQLite Datenbank liegt würde es sich anbieten das über einen Cursor zu machen.
     
    andi-03 bedankt sich.
  4. ko5tik, 22.03.2011 #4
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    andi-03 bedankt sich.
  5. andi-03, 22.03.2011 #5
    andi-03

    andi-03 Threadstarter Junior Mitglied

    Beiträge:
    32
    Erhaltene Danke:
    0
    Registriert seit:
    14.01.2011
    Danke für eure schnellen Antworten!
    Das klingt ja alles pro-DB. Das Sortieren kann ich natürlich auch per DB machen, ich dachte mir nur, wenn die Liste drei Mal umsortiert wird, müsste ich mit Objekten nicht drei Mal auf die DB zugreifen.
    Die Anzahl der Einträge ist leider sehr schwer abschätzbar. Ich würde mal sagen insgesamt zwischen min. 50 und max. 1500 Felder aus ca sieben Tabellen je nach Nutzung durch den User. Durchschnittlich vllt. so um die 250. Gibt es einen "Schwellenwert", ab wann DB besser ist?
    Cursor habe ich auch gerade ausprobiert, das funktioniert gut!
    Die App soll immer im Hintergrund laufen, daher haben niedriger Speicherbedarf und Akkulast so eine hohe Priorität. Und ich möchte es eben gleich richtig angehen, statt später alles ändern zu müssen.
     
  6. muck, 22.03.2011 #6
    muck

    muck Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    7
    Registriert seit:
    07.11.2010
    Hallo,

    also ich habe mit meiner DB und den Daten mal auf nem HTC Desire gemessen. Wobei ein Datensatz bei mir aus 5 Werten besteht. Bis ca. 5000 Einträge war es bei mir egal ab dann wurde die direkte DB-Abfrage schneller da der SQLiteCursor dahingehend optimiert ist das er die Daten nur so liefert wie sie gebraucht werden. (Stichwort: windowing) Es sei denn Du machst irgendwo cursor.getCount :smile:

    Das war nur mal spielerei weil es mich interressiert hat. In meiner App wird es wohl niemand auf 5000 oder mehr Einträge schaffen.
     
    andi-03 bedankt sich.

Diese Seite empfehlen