iOS - время, необходимое для сохранения массива на диск - PullRequest
0 голосов
/ 05 марта 2012

Я использую следующий код для сохранения NSMutableArray на диск:

[myArray writeToFile:filePath atomically:YES];

Предполагая массив из примерно 400 объектов, кто-нибудь может сказать мне, если сохранение с помощью этого метода является длительным процессом?В настоящее время существует вероятность, что файл будет сохранен несколько раз в довольно быстрой последовательности (что-то, что я пытаюсь исправить), но мне было интересно, может ли это вызвать проблемы на каком-то этапе, если массив становится намного больше?

С уважением

Ответы [ 3 ]

1 голос
/ 05 марта 2012

Для справки, скорость записи флэш-памяти iPod Touch 4 составляет ≈ 18 МБ / с (я использовал код из этой статьи для измерений).сохраненного файла на устройстве, перейдя в Xcode Organizer → вкладка «Устройства» → В вашем устройстве выберите «Приложения» → «Ваше приложение» → «Выбрать файл» и нажмите «Download».

0 голосов
/ 05 марта 2012

Вместо записи, например, при каждом обновлении массива, почему бы не сохранить изменения в памяти и просто сбросить их на диск в applicationDidMoveToBackground или другом событии приложения, которое гарантирует его запись до того, как приложение будет убито?

0 голосов
/ 05 марта 2012

Здесь есть несколько вещей -

  1. Попробуйте ограничить количество транзакций ввода-вывода, как правило в целом.
  2. Если вы можете попробовать ограничить ввод-вывод, выполнивкакой-то кэш в памяти и сбросить кеш на диск только при необходимости.
  3. Следующая задача ввода-вывода под рукой для вас;иметь только один поток записи и чтения вашего файла.Если вы не можете этого гарантировать, то вам нужно реализовать какие-то механизмы блокировки файлов и т. Д. Все это может стать уродливым.Лучше, если у вас есть один поток, который пишет и читает.Таким образом, задачи сериализуются.
...