Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TObjectDictionary в Delphi 2007 / 4 сообщений из 4, страница 1 из 1
24.01.2019, 13:09
    #39764237
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TObjectDictionary в Delphi 2007
На этой неделе озадачился поиском быстрого списка. Нужно было хранить данные в виде key=value. Раньше всегда использовал для таких целей TStringList либо THashedStringList (из IniFiles). Встала задача быстрого заполнения большого списка, но перед каждым добавлением требуется проверять наличие элемента key (если уже имеется, то обновлять значение value). При попытке реализации такой задачи на списках, выяснилось, что TStringList и THashedStringList работают с одинаковой скорость, безумно медленно. Начал искать в интернете реализацию быстрых списков, ничего путного для Delphi 2007 не нашёл.
Решил в очередной раз покопаться в исходниках Дэвида Батлера и нашёл там TObjectDictionary. Оказалось, что это то, что нужно. Добавление элементов поочерёдно в поиском выполняется в сотни раз быстрее, чем у TStringList и THashedStringList.
Помимо TObjectDictionary у Батлера есть также TLongIntDictionary, TLongWordDictionary, TInt64Dictionary, TSingleDictionary, TDoubleDictionary и т.д.

Возможно, данный пост будет полезен для тех, у кого нет Generics.Collections.
...
Рейтинг: 0 / 0
24.01.2019, 14:07
    #39764305
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TObjectDictionary в Delphi 2007
DmSer,

Ты бы ссылочку привел, откуда сие скачать можно...
...
Рейтинг: 0 / 0
24.01.2019, 14:16
    #39764318
Фэйтл Эра
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TObjectDictionary в Delphi 2007
DmSerНа этой неделе озадачился поиском быстрого списка. Нужно было хранить данные в виде key=value. Раньше всегда использовал для таких целей TStringList либо THashedStringList (из IniFiles). Встала задача быстрого заполнения большого списка, но перед каждым добавлением требуется проверять наличие элемента key (если уже имеется, то обновлять значение value). При попытке реализации такой задачи на списках, выяснилось, что TStringList и THashedStringList работают с одинаковой скорость, безумно медленно. Начал искать в интернете реализацию быстрых списков, ничего путного для Delphi 2007 не нашёл.
Решил в очередной раз покопаться в исходниках Дэвида Батлера и нашёл там TObjectDictionary. Оказалось, что это то, что нужно. Добавление элементов поочерёдно в поиском выполняется в сотни раз быстрее, чем у TStringList и THashedStringList.
Помимо TObjectDictionary у Батлера есть также TLongIntDictionary, TLongWordDictionary, TInt64Dictionary, TSingleDictionary, TDoubleDictionary и т.д.

Возможно, данный пост будет полезен для тех, у кого нет Generics.Collections.

https://github.com/fundamentalslib/fundamentals5

Давно использую, еще с древних версий. Надежные, код понятный.

Конкретно словари - в модуле flcDataStructs.
...
Рейтинг: 0 / 0
24.01.2019, 15:12
    #39764392
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TObjectDictionary в Delphi 2007
Я вот-этими пользуюсь:
https://github.com/fundamentalslib/fundamentals4

Там другое название у модулей, без "fl"
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TObjectDictionary в Delphi 2007 / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]