2016-07-31 3 views
0

유형 C의 객체 목록을 포함하는 유형 B의 객체 목록을 포함하는 객체 A가 있습니다. 이것은 가장 깊은 계층 구조입니다. 이제, 내가 where() 쿼리를 수행 할 때 결과로서 모든 데이터를 가질 필요가있다. (객체 C는 객체 B를 포함한다.) "문제"입니다. 관리되지 않는 개체 목록이 필요합니다.copyFromRealm 메서드의 maxDepth 매개 변수는 성능에 어떤 영향을 줍니까?

내 질문은 : 이러한 모든 데이터를 가져 오려면 maxDepth 매개 변수를 제공하거나 copyFromRealm 메서드에 제공하지 않을 때 속도를 가져 오는 데 차이가 있습니까? 이후 계층 구조에서 가능한 가장 심도있는 깊이가 필요합니다.

답변

2

maxDepth 값을 설정하면 렐름은 null 값을 주어진 maxDepth 레벨 이상으로 제공합니다. 따라서 null 값으로 설정하면 으로 설정하고 실제 값은 설정하지 않으므로 maxDepth으로 설정하면 속도가 빨라집니다. null 값으로 확인하지 않고 코드 당 최대 가능 깊이로 maxDepth을 설정하면 동일한 성능을 보입니다.

성능면에서 차이가 없습니다. 경우에 당신이 maxDepth 값을 제공하지 않기 때문에 당신이, 또는 maxDepth 매개 변수없이 copyFromRealm를 사용하는 경우, 영역의 경우 모두에서, 당신은 전화, 그래서,

public <E extends RealmModel> List<E> copyFromRealm(Iterable<E> realmObjects) { 
    return copyFromRealm(realmObjects, Integer.MAX_VALUE); 
} 

Integer.MAX_VALUE로 설정하고 copyFromRealm 방법을 다음과 같이 호출 같은 기능.

TL은, DR은 - 당신의 maxDepth 3 (A-> B-> C)이며 3 등 maxDepth을 설정하면 설정 한 경우, 성능에 차이가 없습니다 maxDepth0 < maxDepth < 3로 다음 예는 빠르게,하지만 당신에게 null 값은 maxDepth 이상이어야합니다.