Общая производительность CoreData
У меня есть более или менее общий вопрос об использовании coredata наиболее эффективным способом.
Я попытался два разных подхода к управлению данными, которые показаны в представлении моего проекта.
Подход 1: когда представление загружается, я выполняю все выборки coredata и сохраняю результаты в массиве, затем представление извлекает отображаемые объекты из массива. (т.е.: objectAtIndex:...)
Подход 2: сам viewcontroller позволяет моему классу обработки данных выполнять выборки на ходу, всякий раз, когда требуется конкретный объект coredata, он выбирается.
в моем текущем проекте это вызывает около 200-500 объектов, которые должны быть отсортированы и отображены в виде таблицы в соответствии с их атрибутами.
методы выборки одинаковы, когда я сначала загружаю все объекты или когда я загружаю их в пакетном режиме (с правильными атрибутами).
Разница в основном в методе cellForRow, где я должен решить, хочу ли я выбирать объекты из массива или непосредственно из coredata.
оба метода работают просто отлично, я действительно не вижу каких-либо различий в производительности сейчас, но я боюсь, что с масштабированием проекта и большим количеством данных один или другой путь может быть медленнее.
что вы думаете, это лучший способ сделать это?
1 ответ
С большими наборами данных может быть преимущество с точки зрения пиковой нагрузки на память при использовании NSFetchedResultsController
контроллер, который, предположительно, оптимизирован для выборки нужного объема данных из постоянного хранилища на основе размера таблицы.
С NSFetchedResultsController
у вас есть контроль над размером пакета выборки, который можно настроить для производительности в зависимости от размера и количества выбираемых управляемых объектов и т. д.