Sind Felder eines Realm-Objekts langsamer als Java-Objekte?

8

Ich denke über Realm.io als mein ORM in der Produktions-App.

Wie ich aus dem Dokument "RealmResults" verstehe, werden Objekte im BackendStore (Disk) anstatt im RAM gespeichert, da RealmResult nur ein Proxy der realen Objekte ist, die in der Datenbank gespeichert sind.

Meine Frage ist also, dass das Lesen der Felder eines RealmObject so schnell ist wie das Lesen von einem normalen Java-Objekt, vorausgesetzt, dass Java-Objekte im RAM gespeichert sind. Ich habe viele Lesungen in meiner App, und ich befürchte, dass dies die Reaktionsfähigkeit beeinflussen wird.

    
orelzion 11.11.2015, 10:11
quelle

1 Antwort

3

Es hängt davon ab, mit was Sie vergleichen. Das RealmResults ist das Ergebnis einer Abfrage und Realm kopiert die Objekte nicht, im Gegensatz zu einem traditionellen ORM. Realm holt das Objekt nur dann, wenn es benötigt wird, während ein typisches ORM die Objekte in den Speicher kopiert. Das Kopieren der Objekte von SQLite in einfache Java-Objekte ist an die E / A-Leistung gebunden.

Der Zugriff auf RealmObject ist möglicherweise langsamer als der Zugriff auf ein einfaches Java-Objekt. Aber ein einfaches Java-Objekt ist nicht persistent. Realm bietet eine In-Memory-Option, die einen direkteren Vergleich mit einfachen Java-Objekten darstellt. In-Memory-Realms haben die Eigenschaft als einfache Objekte: Sie verlieren die Daten, wenn die App geschlossen wird.

Wenn Sie also viel Zeit damit verbringen, Objekte aus SQLite zu kopieren, um schnelle speicherinterne Objekte zu erhalten, ist es möglicherweise insgesamt langsamer.

    
geisshirt 11.11.2015 14:38
quelle

Tags und Links