Подтвердить что ты не робот

Firemonkey и большие объемы данных

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

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

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

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

4b9b3361

Ответ 1

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

И да: я провел несколько тестов с этим, потому что у нас есть сетки TMS со 100 000 записей: -).

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