У вас могут быть символы отладки, несмотря на то, что вы используете CRT-релиз и все оптимизации включены. Фактически это то, что по умолчанию используется в Visual C ++ в конфигурации выпуска (см. Свойства проекта / Свойства конфигурации / C / C ++ / Общие / Формат информации об отладке; и Компоновщик / Отладка / Создать информацию об отладке). Обратите внимание, что оптимизированный код может быть сложнее отладить - порядок команд может быть изменен, а некоторые части могут быть полностью оптимизированы, вызывая неожиданное поведение при пошаговом выполнении кода.
Кстати, чтобы отключить CRT отладки, недостаточно просто изменить «Многопоточная DLL отладки (/ MDd)» на «Многопоточная DLL (/ MD)», также необходимо удалить _DEBUG
из определений препроцессора.
При этом медлительность, с которой вы сталкиваетесь, может вообще не быть следствием вашей программы - это может быть артефакт отладчика (то есть медлительность чтения больших структур данных с целью их отображения в пользовательском интерфейсе отладчика). Пожалуйста, попробуйте запустить вашу программу (отладка или выпуск конфигурации - это не имеет особого значения) за пределами отладчика и посмотрите, имеет ли это значение.
Если это так, и вы не можете уменьшить размер хеш-таблицы только для целей отладки, вам придется либо прибегнуть к «отладке printf» (то есть вручную вставить диагностику), либо, возможно, попробовать удаленную отладку.