Ist die Leistung ein ManagedObjectContext abhängig von der Anzahl der enthaltenen (unverändert) Objekte zu retten?

StackOverflow https://stackoverflow.com/questions/2229690

Frage

Eine allgemeine Coredata / SQLite Frage

Gibt es einen signifikanten Unterschied zwischen diesen beiden Szenarien, wenn ein NSManagedObjectContext Speicher eines SQLite Speicher mit:

  • Nach dem Hinzufügen / Ändern / Löschen von ein Objekt in einem NSManagedObjectContext mit 10 ansonsten unverändertem NSManagedObjects
  • Nach dem Hinzufügen / Ändern / Löschen von ein Objekt in einem NSManagedObjectContext mit 10'000 ansonsten unverändertem NSManagedObjects
War es hilfreich?

Lösung

Ein allgemeineres aus meiner Erfahrung mit Enterprise Objects (die Core Data aus entwickelte sich) Ich würde sagen, dass Ihre beiden Szenarien gleich schnell ohne Indizierung wäre und die zweite etwas langsamer mit Indizierung.

Verwenden und SQL zu speichern, die Kosten für das Hinzufügen eines Objekts sind weitgehend festgelegt, unabhängig davon, wie viele andere Objekte in der Grafik sind. Indexing verursacht einen Skalierungseffekt, da der Index auf andere vorhandene Objekte abhängig ist. Doch in den allermeisten Fällen ist dies nicht von Bedeutung.

Je komplexer die Beziehungen innerhalb der grafischen Darstellung der mehr spart durch insgesamt Diagrammgröße beeinflusst. Natürlich, wenn Sie Graph mit nur zehn Objekten haben, dann kann keine Beziehung hat mehr als zehn Objekte darin. Wenn Sie einen mit 10.000 haben, sind die Beziehungen potentiell viel größer und länger dauern, zu verarbeiten.

In der Summe Core Data mit einem SQL-Speicher erscheint nur durch die Größe des Graphen weitgehend unbeeinflusst zu sein.

Andere Tipps

Profilieren werden Ihnen sagen, wenn es ein signifikanter Unterschied. Allerdings vermute ich, dass die Art des Ladens Koordinator die Leistungen auswirken. ein Objekt in einer SQLite-Datenbank aktualisiert, ist wahrscheinlich schneller und besser skalierbar als dies in einer XML-Struktur zu tun.

In meiner früheren Erfahrung gibt es keinen signifikanten Unterschied. Wenn das Objekt hinzugefügt / geändert / Gelöscht viele indizierte Attribute enthält, dann dauert es nur etwas mehr als ohne indizierte Attribute auf den Fall eines Objekts verglichen, aber das erwartet wird, da Indizes auch auch geändert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top