Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

конечно подойдет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо