Зависит ли эффективность сохранения ManagedObjectContext от количества содержащихся (неизмененных) объектов? - PullRequest
1 голос
/ 09 февраля 2010

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

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

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

Ответы [ 3 ]

2 голосов
/ 09 февраля 2010

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

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

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

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

1 голос
/ 09 февраля 2010

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

0 голосов
/ 09 февраля 2010

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

...