2013-03-31 3 views
2

Есть ли существенная разница в производительности (если я выполняю случайный поиск), между использованием строковых и int-ключей? В моем конкретном случае строковые ключи более удобны, но с небольшими трудностями я мог бы получить настройку с помощью клавиш int. Мне просто интересно, стоит ли лишних усилий.C++ unordered_map string vs int key performance

ответ

3

Довольно ясно, что хэширование и сравнение строк обычно дороже, чем хеширование и сравнение int s.

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

Мой совет заключается в коде для ясности и простоты обслуживания, а затем в профиле и оптимизации только узких мест.

+0

Кроме того, хеширование будет более дорогостоящим (и, скорее, более частым), чем сравнение. Однако, если вы все равно будете делать свой собственный хэширование, сравнение будет основным различием, так как оба метода нуждаются в хэшировании. –

+0

Это очень зависит от характера струн, а также от реализации stdlib. Если оба используют одну и ту же хэш-функцию для int и string, а строки в среднем имеют размер int, тогда все, вероятно, будет неразличимым. Как всегда: лучше всего проверить его самостоятельно, для своей собственной вселенной данных. – PlasmaHH