Миллионы поисков в unordered_map, hogger во время выполнения - PullRequest
0 голосов
/ 08 декабря 2018

У меня около 5000 строк (длина в основном от 50 до 80).В настоящее время я создаю неупорядоченную карту и нажимаю эти клавиши, и во время выполнения я получаю доступ (используя функцию поиска карты) к ним 10-100 миллионов раз.Я сделал некоторые профилирования вокруг этого поиска, кажется, хоггер во время выполнения.Я искал другие лучшие и более быстрые варианты поиска, но как-то не нашел ничего существенного.У кого-нибудь есть идеи о том, как сделать это быстрее, открыть и для контейнера на заказ.Я попробовал std::map, но не помогло.Делитесь ссылкой, если у кого-то есть.

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

1 Ответ

0 голосов
/ 08 декабря 2018

Рассмотрев вопрос, похожий на ваш C ++ ~ 1M поиск в unordered_map со строковым ключом, работает намного медленнее, чем .NET-код , я думаю, вы столкнулись с проблемой, вызванной хэш-функцией, используемойstd::unordered_map.Для строк длиной 50-80, которые могут привести к большому количеству коллизий, и это значительно ухудшит производительность поиска.

Я бы предложил вам использовать некоторую пользовательскую хеш-функцию для std::unordered_map.Или вы можете попробовать быструю, эффективную для памяти хэш-карту для C ++ .

...