我有一个对象A,它包含B类型的对象列表,其中包含C类型的对象列表。这是最深层次的层次结构。现在,当我执行where()查询时,我需要将所有这些数据作为结果(意味着,对象A包含对象B,其中包含对象C)。 "问题" 是我需要一个非托管对象列表。
所以,我的问题是:如果我想获取所有这些数据,当我提供maxDepth
参数或不提供copyFromRealm
方法时,获取速度是否存在差异,因为我需要这个等级最深的深度?
答案 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
。