Сравнительный анализ записи/чтения данных в/с ini и реестра

Рейтинг: 0Ответов: 1Опубликовано: 14.04.2015

Всем привет! В текущей работе возник такой вопрос, что будет лучше и быстрее, если записывать и читать данные с ini файла или реестра? Есть ли какая-то научная сводка о том, что и когда лучше использовать, трудозатраты программы по времени при записи/чтении в реестр и в файл конфигурации? Сам сейчас использую компонент DevExpress, в частности cxPropertiesStore, который позволяет записать данные и сохранить изменения в интерфейсе программы. Когда слишком много значений отправляется на запись (они у меня в реестр записываются), то это начинает замедлять работу при закрытии программы. Потому и спрашиваю, что лучше ini или реестр, и как обойти эту неприятную мелочь? Заранее спасибо всем за ответы).

Ответы

▲ 2Принят

Где хранить - это сложная задача. Я лично придерживаюсь того, что хранить лучше в текстовых файлах (в тех же ini файлах). И здесь причина не в скорости, а в удобстве - всегда можно открыть и подкорретировать. А в реестре можно хранить только путь к ini файлу (если есть такая необходимость).

Засорять реестр - только давать повода всяким MegaRegistyCleaner'ам вычищать записи и, теоретически, замедлять систему (пара записей ничего не испортят, а вот десятки мегабайт - наверняка).

Стандартный TIniFile достаточно медленный. Он на каждый чих вызывает системные виндовые функции записи в реест, а они не быстрые (насколько я понял, они стараются каждый раз делать flush, что бы гарантировать, что все данные записаны). Но у Delphi есть "класс-притворщик" - TMemIniFile - который делает запись очень быстро, так как он держит все в памяти. Фактическая запись происходит при вызове деструктора или специализированного метода Update. Вполне возможно, что его скорости хватит с лихвой.

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

Сейчас ini файлы "модны". Ещё недавно очень можно было использовать xml файлы. А сейчас - json. XML хотя и заявляет, что он "читаемый человеком", но это не очень так (по моему мнению). А вот json приятен для редактирования и чтения.