|
|
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
есть у меня TObjectDictionary(TKey, TValue). И в нем очень-очень много элементов. Настолько много, что ОП не хватает. Приходит на ум использовать файлы. Но это гигантская потеря производительности. Как найти баланс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 16:57 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
Решение - СУБД. Без вариантов. Если попробуете самостоятельно реализовать, то получится самописное СУБД. Есть локальные варианты: к примеру SQLite или Embedded Firebird. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:01 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrb, Добавить оперативки или изменить алгоритм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:04 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrb очень-очень много элементов Это сколько, в цифрах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:07 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, от 2 до 10 млрд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:12 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
rgreat, 30 Гб оперативки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:17 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrb от 2 до 10 млрд Только на хранение указателей (даже не данных) на 10млрд. объектов требуется около 75GB памяти. У тебя её сколько? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:19 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrb 30 Гб оперативки Ну привет, чо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:20 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrb rgreat, 30 Гб оперативки Прибавьте ОЗУ, раз не хватает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:35 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrb rgreat, 30 Гб оперативки И на тему алгоритма: ты уверен что тебе нужны все элементы словаря одновременно и с одинаковой частотой? Если есть менее нужные, то их можно и скидывать на диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:46 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
rgreat И на тему алгоритма: ты уверен что тебе нужны все элементы словаря одновременно и с одинаковой частотой? Да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:52 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrb Да Размер ключа и объектов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:55 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrbДа Значит что-то сильно не так с твоим алгоритмом или даже постановкой задачи. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:56 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
rgreat, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 18:01 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrb, Слишком большой ключ и как я понимаю он дублирует 80% полей value. Либо урезай его, либо выкини из value дублирующиеся поля. Они и так есть в ключе. Ну еще можно сделать словарь не по ключу а по его int64 хэшу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 18:22 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
rgreat, данные разные, а int64 хэш можно попробовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 18:26 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
У словаря размер хеша всего 4 млрд. значений. Учитывая алгорит его работы, сильно сомневаюсь, что даже в теории он сможет хранить более 2 млрд. элементов. Ну а если учесть, что идеальных хешей нет, думаю, его эффективность начнёт падать значительно раньше этой цифры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 18:35 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrb, Как ты собрался оперировать такими объёмами данных, когда только для хранения 1 млрд. твоих значений требуется больше 30Gb? (без учёта накладных расходов на структуру словаря). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 18:38 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, потому что мне никто не сказал, что будет больше 1 млрд, и даже более 100 млн ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 18:39 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Да, пожалуй стоит ограничиться 32 битным ключом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 19:08 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
cptngrb> потому что мне никто не сказал, что будет больше 1 млрд, и даже более 100 млн А какая собсно прикладная задача решается? Перебор паролей какой-то или что? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 19:28 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
Продублирую еще раз. В твоей ситуации единственный вариант - это локальная СУБД. В БД ты можешь хранить сколько угодно данных. Лишь бы на диске поместились. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 20:47 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
Может быть ещё https://www.sql.ru/forum/1178076-a/oficialnyy-reliz-cachedbuffers это? Ну т.е. чтобы в памяти не хранить, а в файле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 21:24 |
|
||
|
Очень большой TDictionary
|
|||
|---|---|---|---|
|
#18+
SinemuriusВ твоей ситуации единственный вариант - это локальная СУБД. Вариантов-то дофига. Но таки да, этим может воспользвоаться даже самый неопытный программист. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 22:07 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39929982&tid=2038553]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 247ms |
| total: | 432ms |

| 0 / 0 |
