LINUX.ORG.RU

вопрос по unordered_map


0

2

Всем привет, такие вопросы: является ли unordered_map самым быстрым среди ассоциативных массивов по доступу по ключу? И может кто знает где посмотреть сравнительное тестирование производительности по случайному доступу по ключу различных контейнеров? И что вообще посоветуете для хранения таких пар «UUID»->«lol» которых не больше 100к и размер значения может быть большим.


и размер значения может быть большим

Значение выпихнуть в (умный) указатель и оно опять маленькое.

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

ну это я образно написал большой, рассчитываю на сотню байт :)

Onito
() автор топика
Ответ на: комментарий от AF

Да вот подсчёт хеша по указателю может создать проблему? Ну тоесть если адрес переменной 0х000000, а я например в виде ключа хочу использовать такие числа, разве нельзя? А если я ключом сделаю файловые дескрипторы? Так там вообще просто числа 1 2 3... указатели кстати у меня не перекрываемые.

Onito
() автор топика
Ответ на: комментарий от AF

а хеш как считать? По укзателю?

Зачем значению хеш? Ключ — UUID — он маленький

monk ★★★★★
()
Ответ на: комментарий от Onito

Да вот подсчёт хеша по указателю может создать проблему?

Та не, считай себе, только вот хеш функция будет обрабатывать все большое тело обьекта.

В принципе можно использовать и адрес, но тогда два обьекта с одинаковым содержимым но лежащие по разным адресам будут считаться разными.

Тут надо смотреть, какое именно поведение тебе нужно.

ЗЫ: провтыкал, думал, было предложено ключ ч-з указатель пробрасывать )

AF ★★★
()
Последнее исправление: AF (всего исправлений: 1)
Ответ на: комментарий от AF

да меня вполне устраивает ситуация что два одинаковых объекта могут быть по разным адресам.

Onito
() автор топика
Ответ на: комментарий от Onito

да меня вполне устраивает ситуация что два одинаковых объекта могут быть по разным адресам.

Вопрос в том, будешь ли ты такие обьекты считать одинаковыми или нет?

AF ★★★
()
Ответ на: комментарий от AF

это не важно, каждый объект в мапе не зависит от других и они могут быть хоть все одинаковыми, а по требованию unordered_map главное только уникальный ключ. У меня могут два пользователя с уникальными uuid сохранить грубо говоря число 2 в мапе и это не должно никаких проблем вызывать. Единственное условие не должно быть перекрывающихся указателей. Вот в таком случае я считаю объекты одинаковыми и запрещаю такое поведение. Я надеюсь смог ответить на твой вопрос, а то чувствую что туплю :)

Onito
() автор топика
Ответ на: комментарий от AF

ну ключ же uuid? как он может быть одинаковый у разных юзеров? И каждый юзер пишет в свою ячейку так скажем. ААААААААА я туплю %)

Onito
() автор топика

И что вообще посоветуете для хранения таких пар «UUID»->«lol» которых не больше 100к и размер значения может быть большим.

зависит от ситуации. в стдлибе вон сделали кривое для общего алгоритма решение в виде поиска по указателю, а не по-настоящему UUID.

но для каких-то случаев такое решение будет идеальным

next_time ★★★★★
()
Ответ на: комментарий от next_time

ну у меня такая ситуация: сервер для каждого клиента хранит его данные, ну чтоб каждый раз их не пересылать, вот я и подумал что в таком случае пара uuid->«структура этих данных» будет норм, а про 100к я написал чтоб быть уверенным что такой массив не станет узким местом при возможном увеличении клиентов :)

Onito
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.