2015-11-11 7 views
8

私はRealm.ioをプロダクションアプリのORMとして使用することを考えています。Realmオブジェクトの読み込みフィールドがJavaオブジェクトより遅いですか?

RealmResultsオブジェクトは、RAMではなく、バックエンドストア(ディスク)に格納されています.RealmResultは、データベースに保存されている実際のオブジェクトのプロキシです。

私の質問は、JavaオブジェクトがRAMに保存されているので、RealmObjectのフィールドを通常のJavaオブジェクトから読み取るのと同じくらい速く読むことです。私は自分のアプリで多くの読書をしており、これは応答性に影響を与えるだろうと恐れています。

答えて

3

これは、あなたが比較しているかによって異なります。 RealmResultsはクエリの結果であり、レルムはオブジェクトをコピーしません。これは従来のORMとは異なります。レルムは必要なときにのみオブジェクトをフェッチしますが、通常のORMはオブジェクトをメモリにコピーします。 SQLiteからプレーンJavaオブジェクトにオブジェクトをコピーすることは、I/Oパフォーマンスによって制限されます。

RealmObjectへのアクセスは、プレーンなJavaオブジェクトにアクセスするより時間がかかる場合があります。しかし、普通のJavaオブジェクトは永続的ではありません。 Realmはメモリ内のオプションを提供しています。これはプレーンなJavaオブジェクトとの直接的な比較です。メモリ内のレルムは、プレーンオブジェクトとしてプロパティを持ちます。アプリケーションが終了するとデータが失われます。

メモリ内のオブジェクトが高速になるようにSQLiteからオブジェクトをコピーするのに多くの時間を費やしていると、全体的に処理速度が遅くなる可能性があります。

+2

この権利を得るために、私がRealmObjectでゲッターを使用するたびに、実際にはデータベースから取得するようになりますか?キャッシュ層などはありませんか?それ以外の場合、実際のオブジェクトを取得するのが遅い場合は、クエリをすばやく取得することのポイントは何ですか? – orelzion

+0

すべてのRealmオブジェクトは、Realmファイルによってバックアップされています。内部的には、RealmはメモリにRealmファイルをメモリにマップしています。これは、オブジェクトを逆シリアル化する必要がないので、実際にはスピードアップします。 – geisshirt

関連する問題