Firemonkey и большие объемы данных - PullRequest
12 голосов
/ 19 сентября 2011

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

Например, каждый столбец содержит массив элементов управления - по одному для каждой ячейки. Для обычного текстового столбца с 1 000 000 строк, сетка будет хранить 1 000 000 элементов управления редактированием в памяти - что кажется мне немного сумасшедшим. ( РЕДАКТИРОВАТЬ: сейчас не совсем уверен, правильно ли это предположение. Кажется, он принимает во внимание видимость ячеек, что может означать, что он обеспечивает что-то вроде виртуального режима, но я не совсем уверен ... )

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

Спасибо за любой вклад.

1 Ответ

11 голосов
/ 19 сентября 2011

Сетка FireMonkey имеет только элементы управления количеством видимых линий.Поэтому, если у вас есть сетка с 10 видимыми строками и 3 столбцами, она создаст 30 элементов управления ячейками.Заполнение сетки с 10.000 записей не представляет проблемы: при прокрутке 30 элементов управления ячейки используются повторно и отображаются на новые видимые строки.

И да: я провел несколько тестов с этим, потому что у нас есть сетки TMS с 100.000 записей: -.).Мы используем эту технику в сочетании с нашими объектами данных (они уже загружены, поэтому нет необходимости снова заполнять каждую ячейку сетки строковым значением ...), а сетки TMS и FMX очень быстрые с 100 000 или более записей!

...