Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android copyFromRealm方法中的maxDepth参数如何影响性能?_Android_Performance_Realm_Query Performance - Fatal编程技术网

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

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级别的

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


所以,我的问题是:如果我想获取所有这些数据,当我提供
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