Общая производительность CoreData

У меня есть более или менее общий вопрос об использовании coredata наиболее эффективным способом.

Я попытался два разных подхода к управлению данными, которые показаны в представлении моего проекта.

Подход 1: когда представление загружается, я выполняю все выборки coredata и сохраняю результаты в массиве, затем представление извлекает отображаемые объекты из массива. (т.е.: objectAtIndex:...)

Подход 2: сам viewcontroller позволяет моему классу обработки данных выполнять выборки на ходу, всякий раз, когда требуется конкретный объект coredata, он выбирается.

в моем текущем проекте это вызывает около 200-500 объектов, которые должны быть отсортированы и отображены в виде таблицы в соответствии с их атрибутами.

методы выборки одинаковы, когда я сначала загружаю все объекты или когда я загружаю их в пакетном режиме (с правильными атрибутами).

Разница в основном в методе cellForRow, где я должен решить, хочу ли я выбирать объекты из массива или непосредственно из coredata.

оба метода работают просто отлично, я действительно не вижу каких-либо различий в производительности сейчас, но я боюсь, что с масштабированием проекта и большим количеством данных один или другой путь может быть медленнее.

что вы думаете, это лучший способ сделать это?

1 ответ

Решение

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

С NSFetchedResultsController у вас есть контроль над размером пакета выборки, который можно настроить для производительности в зависимости от размера и количества выбираемых управляемых объектов и т. д.

Другие вопросы по тегам