|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrey Dashkovsky 2:5002/46.4 15 Mar 2002 19:37:10 To : Alexey Shirshin Subject : Индекс и поиск --------------------------------------------------------------------------------
12 Мар 02 19:42, you wrote to me:
AS> Есть массив, элементы котоpого записи. Каждая запись из 10 полей.
AS> Как быстpо осyществлять поиск по каждомy из полей?
AS> Какие есть ваpианты?
AS> Размеp массива пpимеpно 500 Мб.
Если делать руками и без СУБД, я делал это так:
обычное двоичное дерево, где 2х4 - указатель на лево и право, ещё 4 - указатель
на реальную структуру в памяти и последние 4 - какаянь-дь хеш-сумма этой
структуры. Далее заполнял это дерево оно влезало в 500 кил. Сами данные весили
мег 5-10мег. Далее при построении строил дерево по эток контрольной сумме, если
суммы равны - извлекал реальную структуру, тем самым экономил время на
сравнениях. Всё это я делал ещё в реальном режиме через драйвер расширенной
памяти, память выделял блоками по 512к, была своя система адресации номер блока
и смещение внутри блока, на защищённом режиме можно упростить. Дерево
располагалось линейно в памяти, а указатель на лево и направо был в виде номера
очередной записи дерева в массиве. Потом правда после построения дерева я его
вытягивал в массив в 2 этапа: 1) проставлял вместо кеша указатель на корень, 2)
- обходил дерево в нужном порядке и формировал новый массив указателей, как бы
линейный индекс, эта процедура делалась очень быстро. Узкое место тут в
контрольной сумме, по которой делать первоначальное сравнение, т.к. я на неё
отводил 4 байта и если делать хорошую сумму - теряется сортировка, если делать
чтобы сортировка не терялась - растут потери на сравнениях.
Почему-то двоичное дерево порядка n - мне не понравилось, может у меня алгоритм
был кривой, но когда большой порядок - долго, а когда маленький - смысл его
теряется, хотя если обычное двоичное дерево будет сбалансированно - эффекту
должно быть больше.
Andrey
... Любишь кататься - люби и катайся!
--- GoldED+/386 1.1.4.7
* Origin: Всёфигня кроме пчёл,хотя пчёлы,еслиподумать,тоже фигня (2:5002/46.4)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.algorithms/143013c924339.html, оценка из 5, голосов 10
|