2016-09-24 1 views
0

Also ich stöberte Stapel für die Antwort auf meine Frage, und jeder sagt, dass Zählungsanforderungen der Weg zu gehen sind. Ich fand das falsch, wenn ich Unit-Tests mit meiner App durchführte.überprüfen, ob Element in den Kerndaten existiert EFFIZIENT

for number in largeNumber { //large number is 1000 

    let count = try self.context.count(for: countRequest) 

    } 

Betrieb dauerte 0,2 Sekunden !!

während

for number in largeNumber { //large number is 1000 

let fetch = try self.context.fetch(fetchRequest) 

} 

// Operation dauerte 0,158 Sekunden!

so was ist jeder, der über Zählungsanfragen blättert, effizienter zu sein. Es macht es schlimmer, wenn überhaupt. Gibt es eine effizientere Möglichkeit zur Überprüfung, ob ein Wert in den Kerndaten vorhanden ist

Antwort

0

Die Ergebnisse Ihrer Tests können aufgrund eines Unterschieds in dem, was in den beiden Versionen durchgeführt wird, sein. Count gibt die Anzahl der gefundenen verwalteten Objekte zurück. Fetch wird wahrscheinlich die Attribute, Beziehungen etc. auffüllen.

Core Data speichert diese Informationen wahrscheinlich so, dass eine identische Abrufanforderung nicht wiederholt werden muss. Das Ergebnis (in Ihrem Beispiel) könnte 1 Abrufanforderung und 999 Nein-Operationen entsprechen.

Count sollte am effizientesten sein, da die verwalteten Objekte nicht gefüllt werden. Was passiert, wenn Sie 1000 Mal wiederholen, aber jedes Mal ein anderes Prädikat haben?

Verwandte Themen