Android copyFromRealm方法中的maxDepth参数如何影响性能?
我有一个对象a,其中包含类型B的对象列表,其中包含类型C的对象列表。这是层次结构的最深层次。现在,当我执行where()查询时,我需要将所有这些数据作为结果(也就是说,对象a包含对象B,对象a包含对象C)。“问题”是我需要一个非托管对象列表Android copyFromRealm方法中的maxDepth参数如何影响性能?,android,performance,realm,query-performance,Android,Performance,Realm,Query Performance,我有一个对象a,其中包含类型B的对象列表,其中包含类型C的对象列表。这是层次结构的最深层次。现在,当我执行where()查询时,我需要将所有这些数据作为结果(也就是说,对象a包含对象B,对象a包含对象C)。“问题”是我需要一个非托管对象列表 所以,我的问题是:如果我想获取所有这些数据,当我提供maxDepth参数或不提供copyFromRealm方法时,获取速度是否有任何差异,因为我需要这个参数来获取层次结构中可能最深的深度?当您设置maxDepth值时,领域将提供超出给定maxDepth级别的
所以,我的问题是:如果我想获取所有这些数据,当我提供
maxDepth
参数或不提供copyFromRealm
方法时,获取速度是否有任何差异,因为我需要这个参数来获取层次结构中可能最深的深度?当您设置maxDepth
值时,领域将提供超出给定maxDepth
级别的null
值。因此,如果您对null
值没有问题,那么设置maxDepth
会更快,因为Realm设置的是null
而不是实际值。如果您对null
值不满意,并根据您的代码将maxDepth
设置为最大可能深度,它将具有相同的性能
性能方面没有区别;如果使用带或不带maxDepth
参数的copyFromRealm
,因为如果不提供maxDepth
值,Realm会将其设置为Integer.MAX\u值
并调用copyFromRealm
方法,如下所示:
public <E extends RealmModel> List<E> copyFromRealm(Iterable<E> realmObjects) {
return copyFromRealm(realmObjects, Integer.MAX_VALUE);
}
公共列表copyFromRealm(Iterable realmObjects){
返回copyFromRealm(realmObjects,Integer.MAX_值);
}
因此,在这两种情况下,调用相同的函数
TL;DR-如果
maxDepth
为3(A->B->C),并且将maxDepth
设置为3,则性能没有差异,如果将maxDepth
设置为0
则速度更快,但设置maxDepth
值时,会得到null
值,领域将提供超出给定maxDepth
级别的null
值。因此,如果您对null
值没有问题,那么设置maxDepth
会更快,因为Realm设置的是null
而不是实际值。如果您对null
值不满意,并根据您的代码将maxDepth
设置为最大可能深度,它将具有相同的性能
性能方面没有区别;如果使用带或不带maxDepth
参数的copyFromRealm
,因为如果不提供maxDepth
值,Realm会将其设置为Integer.MAX\u值
并调用copyFromRealm
方法,如下所示:
public <E extends RealmModel> List<E> copyFromRealm(Iterable<E> realmObjects) {
return copyFromRealm(realmObjects, Integer.MAX_VALUE);
}
公共列表copyFromRealm(Iterable realmObjects){
返回copyFromRealm(realmObjects,Integer.MAX_值);
}
因此,在这两种情况下,调用相同的函数
TL;DR-如果maxDepth
是3(A->B->C),并且将maxDepth
设置为3,则没有性能差异,如果将maxDepth
设置为0
则是更快,但您会得到null
值,超出maxDepth