Производительность на iPad пишет в файл - PullRequest
1 голос
/ 04 февраля 2012

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

Мы используем RestKit для синхронизации CoreData с серверомчто очень мило.

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

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

Так что мой вопрос касается производительности.Как часто я могу писать в этот текстовый файл, прежде чем он повлияет на производительность?В этом приложении есть несколько экранов, которые они могут просматривать по мере ввода информации.Они могли бы пролистать страницы довольно быстро, и я не хочу, чтобы это вызывало задержки.Это то, что я должен рассмотреть, или я далеко?

Ответы [ 2 ]

1 голос
/ 04 февраля 2012

В конечном счете, вы должны определить количество и сложность операции записи.

В любом случае, что мешает вам использовать библиотеки C или, точнее, более типичный подход C? Вот разница в подходах, которые вы часто видите:

  • C: для каждого изменения добавляйте несколько байтов в файл
  • ObjC: Для каждого изменения (набора) создайте список свойств или архив всего материала. Запишите указанный список свойств полностью на диск.

Инкрементальный подход также возможен при использовании типов ввода / вывода CF / NS более низкого уровня. В частности:

  • NSFileHandle
  • NSOutputStream
  • CFWriteStream

Эти типы могут выполнять синхронизацию и асинхронную запись.

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

1 голос
/ 04 февраля 2012

Вы можете тестировать вещи, чтобы определить производительность, но, прежде всего, ваши записи в файл и другие не связанные с пользовательским интерфейсом работы могут быть связаны между собой (см. Ссылки NSThread или NSOperation).Помещение этой работы в фоновые потоки помогает гарантировать, что интерфейс вашего приложения, который работает в основном потоке, не должен появляться для замедления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...