Общая производительность CoreData - PullRequest
0 голосов
/ 20 марта 2012

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

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

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 20 марта 2012

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

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

...