Должен ли я сохранить данные этого приложения? - PullRequest
0 голосов
/ 10 марта 2009

В моем приложении есть класс, который переводит маркеры пути в полностью определенные пути. Например: он может принимать строку типа "%MYAPPDATA%" и возвращать C:\Users\user.DOMAIN\AppData\Raoming\MyApp.

В качестве альтернативы, класс имеет перегрузку для функции, которая может принимать перечисление вместо строки. Например: он может принимать перечисление AppPaths.MyAppData и возвращать C:\Users\user.DOMAIN\AppData\Raoming\MyApp.

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

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

Мысли

Ответы [ 3 ]

2 голосов
/ 10 марта 2009

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

Опять же, если у вас больше, скажем, 250-500 элементов, на самом деле не имеет смысла использовать дисковое хранилище во время работы вашей программы: накладные расходы как по времени ожидания (время поиска), так и по кодированию просто не имеют стоило того.

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

1 голос
/ 10 марта 2009

Все зависит от желаемой вами производительности.

Вы можете хранить данные в таблицах базы данных (одна для «сырых» данных, две для связи между ключами и перечислением) и искать их с помощью простых запросов SQL. Однако это может быть не самым быстрым способом, в зависимости от базовой базы данных и механизма кэширования.

Вы также можете использовать две карты в памяти (словари?) Для более быстрого поиска во время выполнения и инициализации их при запуске.

0 голосов
/ 10 марта 2009

Я бы оставил его в памяти, если невозможно, чтобы он вырос до большого размера, иначе я бы сохранил его в базе данных / файле для дальнейшего использования.

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

if(Directory.Exists(User.Current.AppDataPath))

Таким образом, вы, вероятно, могли бы избавиться от «таблицы поиска», поскольку каждый пользователь знает, где находятся его AppData - просто мысль ...

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