Как я могу оптимизировать использование оперативной памяти, когда мне нужно показать пользователю большой объем данных? - PullRequest
3 голосов
/ 20 мая 2011

У меня есть приложение, в котором я использую DataGrid для отображения данных пользователю.Я использую объект DataTable для хранения данных в памяти.В DataTable около 70 столбцов.

У меня очень большой набор данных.Я хочу отобразить его в DataGrid и использовать фильтры и другие функции управления данными DataGrid (например, сортировку).Но у меня есть проблема: когда я загружаю все свои данные в объект DataSource, он потребляет более 1 ГБ ОЗУ (MS Excel использует только 60 МБ).Это заставляет ОС интенсивно использовать подкачку и, конечно, замедляет работу всей системы.

Мой вопрос: есть ли способ отобразить данные в DataGrid и использовать все расширенные функции управления данными без полной загрузки всех моих данных?данные в объекте DataSource?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 20 мая 2011

Вам необходимо использовать виртуализацию. Отметьте этот пост в блоге и этот один.

Или это сообщение на форуме

2 голосов
/ 20 мая 2011

Поскольку пользователь никогда не будет рассматривать более одного экрана одновременно, вы не сможете объяснить ему необходимость в гигабайтах ОЗУ для этого.

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

Например, вы можете создать одну «отсортированную» версию набора данных для 10 наиболее часто используемых критериев сортировки.Не стесняйтесь хранить только 1000 первых и 1000 последних строк.Используйте знания о том, что именно пользователь собирается делать с этими данными, чтобы найти более оптимизированные структуры данных и т. Д. *

Вы можете использовать методы, подобные применяемому Ajax, чтобы создать «живое» впечатление.

...