2016-07-31 20 views
0

私はタイプCのオブジェクトのリストを含むタイプBのオブジェクトのリストを含むオブジェクトAを持っています。これは階層の最も深いレベルです。さて、私がwhere()クエリを実行すると、結果としてこれらのデータをすべて取得する必要があります(オブジェクトCはオブジェクトBを含むオブジェクトAを意味します)。 「問題」私には、アンマネージドオブジェクトのリストが必要です。copyFromRealmメソッドのmaxDepthパラメータはどのようにパフォーマンスに影響しますか?

私はこれらのデータをすべて取得したい場合、maxDepthパラメータをcopyFromRealmメソッドに提供するかどうかに応じてフェッチ速度に違いがありますか?

答えて

2

maxDepthの値を設定すると、レルムはnullの値を指定されたmaxDepthレベル以上に設定します。したがって、nullの値で正常であれば、を設定し、実際の値は設定しないため、maxDepthを設定する方が高速になります。 nullの値でOKでなく、maxDepthをコードごとに最大可能深度に設定すると、同じパフォーマンスが得られます。

パフォーマンス上の違いはありません。あなたはmaxDepthパラメータの有無にかかわらずcopyFromRealmを使用する場合は、場合にあなたがmaxDepth価値を提供しないため、レルムがInteger.MAX_VALUEとして設定し、だから、

public <E extends RealmModel> List<E> copyFromRealm(Iterable<E> realmObjects) { 
    return copyFromRealm(realmObjects, Integer.MAX_VALUE); 
} 

を次のようにcopyFromRealmメソッドを呼び出し、両方のケースでは、あなたが呼び出します同じ機能。

TL; DRは - あなたのmaxDepth 3(A-> B-> C)であり、あなたは3としてmaxDepthを設定する場合は、あなたがそこにあなたがその速いはい、その後0 < maxDepth < 3としてmaxDepthを設定した場合も、パフォーマンスの差は、ありませんが、 nullの値はmaxDepthを超えてください。

関連する問題