Зависит ли производительность сохранения ManagedObjectContext от количества содержащихся (неизмененных) объектов?

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

Вопрос

Общий вопрос CoreData/SQLite

Есть ли существенная разница между этими двумя сценариями при сохранении NSManagedObjectContext используя хранилище SQLite:

  • После добавления/изменения/удаления один объект в NSManagedObjectContext содержащий 10 в остальном без изменений NSManagedObjects
  • После добавления/изменения/удаления один объект в NSManagedObjectContext содержащий 10'000 в остальном без изменений NSManagedObjects
Это было полезно?

Решение

Обобщая свой опыт работы с корпоративными объектами (на основе которых произошли Core Data), я бы сказал, что оба ваших сценария будут одинаково быстрыми без индексации, а второй - немного медленнее с индексацией.

При использовании хранилища SQL стоимость добавления одного объекта в значительной степени фиксирована независимо от количества других объектов в графе.Индексирование действительно вызывает эффект масштабирования, поскольку индекс зависит от других существующих объектов.Однако в подавляющем большинстве случаев это не имеет существенного значения.

Чем сложнее отношения внутри графа, тем больше на сохранение влияет общий размер графа.Очевидно, что если у вас есть граф только с десятью объектами, то никакое отношение не может содержать более десяти объектов.Если у вас есть один с 10 000, отношения потенциально намного больше, и их обработка займет больше времени.

В целом, на Core Data с хранилищем SQL, по-видимому, практически не влияет размер графа.

Другие советы

Профилирование покажет вам, есть ли существенная разница.Однако подозреваю, что тип координатора магазина повлияет на производительность.Обновление объекта в базе данных SQLite, вероятно, происходит быстрее и масштабируемее, чем обновление объекта в дереве XML.

По моему предыдущему опыту существенной разницы нет.Если добавляемый/изменяемый/удаляемый объект содержит много индексированных атрибутов, то это займет немного больше времени по сравнению со случаем объекта без индексированных атрибутов, но это ожидаемо, поскольку индексы также будут изменены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top