Зависит ли производительность сохранения ManagedObjectContext от количества содержащихся (неизмененных) объектов?
-
19-09-2019 - |
Вопрос
Общий вопрос CoreData/SQLite
Есть ли существенная разница между этими двумя сценариями при сохранении NSManagedObjectContext
используя хранилище SQLite:
- После добавления/изменения/удаления один объект в
NSManagedObjectContext
содержащий 10 в остальном без измененийNSManagedObjects
- После добавления/изменения/удаления один объект в
NSManagedObjectContext
содержащий 10'000 в остальном без измененийNSManagedObjects
Решение
Обобщая свой опыт работы с корпоративными объектами (на основе которых произошли Core Data), я бы сказал, что оба ваших сценария будут одинаково быстрыми без индексации, а второй - немного медленнее с индексацией.
При использовании хранилища SQL стоимость добавления одного объекта в значительной степени фиксирована независимо от количества других объектов в графе.Индексирование действительно вызывает эффект масштабирования, поскольку индекс зависит от других существующих объектов.Однако в подавляющем большинстве случаев это не имеет существенного значения.
Чем сложнее отношения внутри графа, тем больше на сохранение влияет общий размер графа.Очевидно, что если у вас есть граф только с десятью объектами, то никакое отношение не может содержать более десяти объектов.Если у вас есть один с 10 000, отношения потенциально намного больше, и их обработка займет больше времени.
В целом, на Core Data с хранилищем SQL, по-видимому, практически не влияет размер графа.
Другие советы
Профилирование покажет вам, есть ли существенная разница.Однако подозреваю, что тип координатора магазина повлияет на производительность.Обновление объекта в базе данных SQLite, вероятно, происходит быстрее и масштабируемее, чем обновление объекта в дереве XML.
По моему предыдущему опыту существенной разницы нет.Если добавляемый/изменяемый/удаляемый объект содержит много индексированных атрибутов, то это займет немного больше времени по сравнению со случаем объекта без индексированных атрибутов, но это ожидаемо, поскольку индексы также будут изменены.