Давайте возьмем стандартную библиотечную реализацию `HashMap`, измеренную на нашем синтетическом тесте. Для этого мы запустим профилировщик и изучим, где главное узкое место, и попытаемся улучшить это. Для моей системы Linux я буду использовать утилиту perf. Не забудьте построить исполняемый файл с использованием символов отладки. Кроме того, рекомендуется профилировать релизную сборку. Согласно отчету профилировщика, наибольшие накладные расходы (30%) приходятся на метод `get_index()`. Для интереса, вот как реализуется метод: Возможно, это - функция хеширования, которая занимает слишком много времени? Ну, давайте исследуем её далее, войдя в инструкции уровня ассемблера: Обратите внимание, что наше узкое место появляется после метода `hasher::finish()` непосредственно перед возвратом `get_index()`. Наиболее важной операцией, по мнению профилировщика, является `mov`. Имеет ли это смысл? `mov`-операция, вероятно, является всего лишь одним циклом, поскольку она перемещает между регистрами