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.

的值