|
|
|
TObjectDictionary в Delphi 2007
|
|||
|---|---|---|---|
|
#18+
На этой неделе озадачился поиском быстрого списка. Нужно было хранить данные в виде key=value. Раньше всегда использовал для таких целей TStringList либо THashedStringList (из IniFiles). Встала задача быстрого заполнения большого списка, но перед каждым добавлением требуется проверять наличие элемента key (если уже имеется, то обновлять значение value). При попытке реализации такой задачи на списках, выяснилось, что TStringList и THashedStringList работают с одинаковой скорость, безумно медленно. Начал искать в интернете реализацию быстрых списков, ничего путного для Delphi 2007 не нашёл. Решил в очередной раз покопаться в исходниках Дэвида Батлера и нашёл там TObjectDictionary. Оказалось, что это то, что нужно. Добавление элементов поочерёдно в поиском выполняется в сотни раз быстрее, чем у TStringList и THashedStringList. Помимо TObjectDictionary у Батлера есть также TLongIntDictionary, TLongWordDictionary, TInt64Dictionary, TSingleDictionary, TDoubleDictionary и т.д. Возможно, данный пост будет полезен для тех, у кого нет Generics.Collections. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 13:09 |
|
||
|
TObjectDictionary в Delphi 2007
|
|||
|---|---|---|---|
|
#18+
DmSer, Ты бы ссылочку привел, откуда сие скачать можно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 14:07 |
|
||
|
TObjectDictionary в Delphi 2007
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 14:16 |
|
||
|
TObjectDictionary в Delphi 2007
|
|||
|---|---|---|---|
|
#18+
Я вот-этими пользуюсь: https://github.com/fundamentalslib/fundamentals4 Там другое название у модулей, без "fl" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 15:12 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=84&tid=2039895]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 407ms |

| 0 / 0 |
