Хранить большой список объектов в памяти или читать из файла .NET - PullRequest
0 голосов
/ 26 января 2012

Мне нужно прочитать Большой список объектов (каждый объект содержит 2 строки и 1 Int32) (я извлекаю эти объекты из веб-страницы XML), он должен содержать около 10000 объектов.

Мне нужно взять из этого списка около 20 записей каждую минуту.

Я бы знал, если с точки зрения производительности и безопасности памяти лучше хранить этот Список в памяти и записывать эти 20 записей (каждую минуту) или загружать Xml с веб-страницы, каждую минуту читать его с локального диска и находить эти 20 записей.

Могут быть приняты и любые другие решения:)

Обновление: забыл сказать, что я говорю о приложении Winform C #

Ответы [ 2 ]

1 голос
/ 26 января 2012

Первое правило оптимизации - это измерение перед оптимизацией.

Когда вы загружаете все объекты в память, сколько памяти он потребляет? Сколько памяти вам нужно для остальной части вашего приложения? Сколько памяти у машины? Вы работаете в 32- или 64-битном адресном пространстве? Сколько памяти нужно одновременно другим необходимым приложениям?

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

P.S. Посмотрите на XmlReader против XmlDocument для анализа XML-файла.

0 голосов
/ 26 января 2012

Для повышения производительности вам будет намного лучше избегать дискового ввода-вывода.

Что касается памяти, оба решения будут одинаковыми, если вы не обработаете файл строкой за раз (что приведет к ужасной производительности, поскольку вы не сможете хешировать / индексировать результаты).

Если есть «ключ», я бы держал их в памяти в словаре.

В случае сомнений, профиль.

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