Из руководства по программированию iPhone
При создании файлов или записи
данные файла, сохраните следующее
руководящие принципы:
- Минимизируйте объем данных, которые вы записываете на диск. Файловые операции выполняются относительно медленно и включают запись на флэш-диск, срок службы которого ограничен. Вот некоторые конкретные советы, которые помогут вам свести к минимуму операции с файлами:
- Записывать только те части файла, которые изменились, но объединять изменения, когда это возможно.
- Старайтесь не записывать весь файл просто для изменения нескольких байтов.
- При определении формата файла группируйте часто изменяемый контент вместе, чтобы минимизировать общее количество блоков, которые необходимо записывать на диск каждый раз.
- Если ваши данные состоят из структурированного контента, доступ к которому осуществляется случайным образом, сохраните его в постоянном хранилище Core Data или в базе данных SQLite. Это особенно важно, если объем данных, которыми вы манипулируете, может вырасти до нескольких мегабайт.
- Избегайте записи файлов кэша на диск. Единственное исключение из этого правила - когда ваше приложение закрывается, и вам нужно записать информацию о состоянии, которую можно использовать, чтобы вернуть ваше приложение в то же состояние при следующем запуске.
Некоторое время назад я читал статью о твердотельных накопителях Intel (которые, к сожалению, пока не могу найти), в которых упоминалось, что основной проблемой долголетия было то, что ОС фактически не удаляла данные, а просто помечала блокирует как свободные, вызывая довольно болезненное замедление, когда эти «свободные» блоки записываются (вызывая чтение-изменение-хранение, а не просто сохранение). Это касается и iPhone, т. Е. Будет ли диск более подвержен замедлению при более частом удалении файлов?
Я рассматриваю формат файла, основанный на журнале повторов, таким образом я могу поддерживать отмену между сеансами, и у меня также нет случайных записей (всегда добавляются), но в какой-то момент я предполагаю, что мне придется консолидировать хотя бы часть журнала, чтобы сохранить размер файла на разумном уровне. Мой вопрос в этом случае, который был бы более эффективным (с точки зрения долговечности привода)? У меня есть пара путей, которые я рассмотрел
- Перезаписать тот же файл и
- обрезать пространство, которое мне не нужно
- или оставьте это место (заполненное старыми данными) и перезапишите его, когда мне это понадобится снова
- или напишите новый файл и удалите старый
но я открыт для предложений. Я предполагаю, что типичный размер файла будет варьироваться от пары кБ до пары сотен кБ, но более высокое значение - больше предположений, чем что-либо еще.