Objekte oder nicht (für Performance)

A

andi-03

Neues Mitglied
0
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!
 
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.
 
  • Danke
Reaktionen: andi-03
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.
 
  • Danke
Reaktionen: andi-03
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.
 
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.
 
  • Danke
Reaktionen: andi-03

Ähnliche Themen

netfreak
  • netfreak
Antworten
10
Aufrufe
455
netfreak
netfreak
5
Antworten
0
Aufrufe
1.142
586920
5
Y
Antworten
4
Aufrufe
1.212
swa00
swa00
Zurück
Oben Unten