copyFromRealm方法中的maxDepth参数如何影响性能?

时间:2016-07-31 10:39:30

标签: android performance realm query-performance

我有一个对象A,它包含B类型的对象列表,其中包含C类型的对象列表。这是最深层次的层次结构。现在,当我执行where()查询时,我需要将所有这些数据作为结果(意味着,对象A包含对象B,其中包含对象C)。 "问题" 是我需要一个非托管对象列表。

所以,我的问题是:如果我想获取所有这些数据,当我提供maxDepth参数或不提供copyFromRealm方法时,获取速度是否存在差异,因为我需要这个等级最深的深度?

1 个答案:

答案 0 :(得分:2)

当您设置maxDepth值时,Realm将提供超出给定null级别的maxDepth值。因此,如果您对null值很好,设置maxDepth会更快,因为Realm设置null而不是实际值。如果您对null值不满意,并根据您的代码将maxDepth设置为最大可能深度,则它将具有相同的效果。

表现明智没有区别;如果您使用带有copyFromRealm参数的maxDepth {%}},因为如果您未提供maxDepth值,则Realm会将其设置为Integer.MAX_VALUE并调用{{1}方法如下,

copyFromRealm

因此,在这两种情况下,您都可以调用相同的函数。

TL; DR - 如果您的public <E extends RealmModel> List<E> copyFromRealm(Iterable<E> realmObjects) { return copyFromRealm(realmObjects, Integer.MAX_VALUE); } 为3(A-> B-> C)且您将maxDepth设为3,则没有性能差异,如果您将maxDepth设置为maxDepth,则表示更快,但您获得的0 < maxDepth < 3值超出了null