Вот некоторые вещи, которые вы можете рассмотреть:
0) Вы уверены, что это узкое место производительности? Понравились результаты Quantify, Cachegrind, gprof или что-то в этом роде? Потому что поиск на такой карте Smap должен быть довольно быстрым ...
1) Вы можете переопределить функтор, используемый для сравнения ключей, в std :: map <>, для этого есть второй параметр шаблона. Я сомневаюсь, что вы можете сделать намного лучше, чем оператор <, однако. </p>
2) Значительно ли меняется содержимое карты? Если нет, и учитывая очень маленький размер вашей карты, возможно, использование отсортированного вектора и двоичного поиска может дать лучшие результаты (например, потому что вы можете лучше использовать локальность памяти.
3) Известны ли элементы во время компиляции? Вы можете использовать идеальную хеш-функцию для улучшения времени поиска, если это так. Поиск gperf в Интернете.
4) Много ли у вас поисков, которые ничего не нашли? Если это так, то, возможно, сравнение с первым и последним элементами в коллекции может устранить многие несоответствия быстрее, чем полный поиск каждый раз.
Они уже были предложены, но более подробно:
5) Поскольку у вас так мало строк, возможно, вы могли бы использовать другой ключ. Например, у вас все ключи одинакового размера? Можете ли вы использовать класс, содержащий массив символов фиксированной длины? Можете ли вы преобразовать свои строки в числа или некоторую структуру данных только с числами?