Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 27 апр 2024, 07:10

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Медленная работа TMemTableEh
СообщениеДобавлено: 23 июл 2015, 06:55 
Не в сети

Зарегистрирован: 17 сен 2013, 07:01
Сообщений: 66
Ehlib 8.0.15
Delphi XE7

У меня в проекте используется TFDQuery как источник информации для загрузки в TMemTableEh для последующего отображения в DBGridEh в виде дерева
В выборке около 10к строк, 8 полей, половина из которых ftWideString.

При копировании информации с помощью TMemTableEh.LoadFromDataSet наблюдаю довольно сильные тормоза при повторной перезаливки данных.
Удаление данных из датасета EmptyTable ~1.6 сек
Повторная заливка LoadFromDataSet ~1.8 сек

Итого рефреш стоит более 3 секунд, аналогичная операция между TFDQuery и TFDMemTable стоит 0.25 сек.

Стал разбираться и выяснилось, что для определения с каким типом будут хранится данные в массиве данных в TMemoryRecordEh.FData, определяется в функции
function TMTDataFieldEh.GetVarDataType: TVarType;
И там прописано, что для полей с типом ftWideString данные нужно сохранять в формате varOleStr.

И теперь вопрос, зачем так сделано?
Работа с типом varOleStr в 10 раз медленнее чем varUString, а данные хранятся в таком же виде. Какой профит от использования varOleStr?

Заменил у себя в функции TMTDataFieldEh.GetVarDataType:
ftWideString: Result := varOleStr;
на
ftWideString: Result := varUString;

Время рефреша данных стало сопоставимо с временем FireDac, т.е. ~0.25 сек, что более чем в 10 раз быстрее.

Вы как хотите конечно, но у себя я так и оставлю.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB