![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Гость_Гость_Алексей_*_* |
![]()
Сообщение
#1
|
Гости ![]() |
Всем привет.
У меня есть хэш таблички которые содержат в себе порядка 1000-2000 указателей... с доступом по unsigned int (boost::unordered_map<unsigned int, Object*> objects;) для быстрой выборки объектов по id, в свою очередь эти хэш таблички надо перебирать каждую 1/60 секунды... сам вопрос не накладно ли перебирать через итераторы? я пока не понимаю каким боком идет перебор через итераторы хеш таблицы это просто перебор с игнорированием свободных ячеек или что то более мудрёное?.... P.S.у меня не особо получается ковырять исходники поэтому решил спросит у тех кто знает... |
|
|
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
1/60 секунды - это не такое уж частое обращение. я не работала с хэшами, но вот тут человек проводил сравнения хэш-реализаций:
http://incise.org/hash-table-benchmarks.html для мелких таблиц unordered_map подойдёт. для более крупных ради оптимизации можно порыться в поисках лучшего варианта. да, и почему именно unordered? обычно они используются для объектов, которые нельзя упорядочить. а скорость поиска в упорядоченных множествах увеличивается в разы. единственный минус упорядоченности - медленная вставка. но если поиск осуществляется чаще, чем вставка, то имеет смысл посмотреть в сторону стандартных мапов. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 16.2.2025, 20:35 |