Поиск значения в коллекции по ключу?

Программирование на Visual Basic for Applications
Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Поиск значения в коллекции по ключу?

Сообщение Vitaly1 » 08.10.2003 (Ср) 13:55

Никто не знает, каким образом происходит поиск в коллекции, перебором ключей, или еще как?
Это будет быстрее, чем поиск в массиве?
Если я имею числовые индексы, по ним поиск в массиве будет быстреее, чем поиск в колеекции по ключам?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 20.01.2004 (Вт) 18:02

Поиска как такового в коллекции нет :) То есть метода Search. А раз нет - так это вам решать, как поиск лучше организовывать.



А насчет того, что быстрее работает - обратитсяь можно к skiperski он у нас большой спец по бенчмаркам :)

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 20.01.2004 (Вт) 19:36

Доступ к элементу коллекции по его Key реализован в виде бинарного поиска. Простейший тест показывает это достаточно ясно. Т.о., если массив отсортирован и реализован алгоритм бинарного поиска, то скорость доступа одинакова. Однако коллекции отжирают чуть поболе памяти, но зато не надо возиться с алгоритмами сортировки и поиска. С другой стороны, для коллекций надо реализовывать механизм защиты от поиска эл-та с несуществующим Key. И снова же, если в коллекции хранятся не объекты, то возникают проблемы с обновлением хранимого значения.

Думайте сами, решайте сами...

Моя ИМХА: Если в качестве единицы данных используется объект, то не надо голову ломать, берём коллекцию, и дело - в шляпе. Крайне редко в программах на VB возникают ситуации с массивами больших вычислений. Математики мало, интерфаса много. Это же не Фортан. А единичные операции, даже тем же перебором, будут выполнятся на столько быстрее, чем нажатие на клавишу или отрисовка любого контрола, что пользователь ничего не заметит.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 91

    TopList