![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TBucketList
Faceless © (2011-12-01 12:07:00)нужно хранить в списке большой объем данных и иметь возможность быстро обрабатывать их. TBucketList подойдет для этого?
sniknik (2011-12-01 16:43:00) [1]> А "таблица" -- это такая магическая штука
это такая штука заточенная под обработку данных. сортировка, фильтры, индексы, выборки... а вариант с "объектом/рекордом" это все одно, что "упаковка" всех полей в один блоб... и ничего с ним не сделать, кроме как открыть и чего то там самому "наковырять".
т.что везде где начинают про обработку данных скорее всего нужна таблица... если конечно не имеют в виду чего то другого, под обработкой.
DiamondShark (2011-12-01 16:23:00) [2]Вот и знахари подоспели:
> "развернул" бы его по полям и внес в поля таблицы.
А "таблица" -- это такая магическая штука, которая памяти не занимает и времени на доступ не требует.
Медвежонок Пятачок (2011-12-01 16:15:00) [3]И какая разница в хранении полмиллиона экземпляров класса или полмиллиона Record-ов? Различие между объектом и записью весьма условные.
В хранении почти никакой. Во времени создания есть небольшая.
Учитывая еще и то, что в случае рекордов память под все поллимона сущностей можно выделить одним вызовом.
sniknik (2011-12-01 14:42:00) [4]> или полмиллиона Record-ов?
никакой, и рекорд я бы тоже не стал хранить... "куском", а "развернул" бы его по полям и внес в поля таблицы.
в конце концом поиск/группировка по данным объекта это и есть обработка... если для каждой минимальной операции сначала придется "раскручивать" объект, пол миллиона для выборки "с полем 1 = 10 например ", то скоростей не жди...
DVM (2011-12-01 14:27:00) [5]
> Медвежонок Пятачок © (01.12.11 13:04) [6]
> я бы сильно подумал, прежде чем использовать под хранилище
> сущности объект и создавать полмиллиона его экземпляров.
>
И какая разница в хранении полмиллиона экземпляров класса или полмиллиона Record-ов? Различие между объектом и записью весьма условные.
DiamondShark (2011-12-01 14:22:00) [6]
> нужно хранить в списке большой объем данных
Любой контейнер может хранить столько данных, сколько влезает в память.
Есть, конечно, нюансы с накладными расходами и деталями реализации, но в общем случае на современной аппаратуре объём достаточно "большой".
> и иметь возможность быстро обрабатывать их.
Это смотря как обрабатывать.
Например, "найти все возможные строки такой же длины, дающие с заданной строкой коллизии MD5" -- это тоже "обработка", и выполнить её "быстро" не получится вне зависимости от контейнера.
> TBucketList подойдет для этого?
А леший его знает.
TBucketList -- контейнер, заточенный под определённый метод доступа к элементам.
Если у тебя метод доступа -- существенная часть "обработки", то, подходит или нет, зависит от "обработки".
Jeer (2011-12-01 13:58:00) [7]
> Faceless © (01.12.11 12:59) [5]
>
> в основном самой частой операцией будет поиск, ну и добавление
> и удаление предусматриваться,
DB не интересует ? А зря.
Медвежонок Пятачок (2011-12-01 13:04:00) [8]я бы сильно подумал, прежде чем использовать под хранилище сущности объект и создавать полмиллиона его экземпляров.
Faceless (2011-12-01 12:59:00) [9]в основном самой частой операцией будет поиск, ну и добавление и удаление предусматриваться, но достаточно редко будет происходить. данные предполагается хранить в виде: ключ (целое число) и объект (TMyObject). Приблизительный объем - 500 000 записей. Пока что ничего лучше чем TObjectBucketList не нашел.
И. Павел (2011-12-01 12:45:00) [10]> [0] Faceless © (01.12.11 12:07)
Контейнер нужно подбирать в зависимости от типа желаемой обработки. Поэтому сперва представьте, какие операции будет всех чаще производиться с данными а потом выберите средство.
Медвежонок Пятачок (2011-12-01 12:38:00) [11]А какая разница?
Ты же не список собрался обрабатывать, а "большой объем данных"
Faceless (2011-12-01 12:35:00) [12]
> конечно подойдет.
TBucketList это некое подобие хеш-таблицы так ведь? в сравнении с TStringList он будет быстрее.
Медвежонок Пятачок (2011-12-01 12:30:00) [13]конечно подойдет.