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