У меня есть шаблон кода, который переводит одно целое в другое. Точно так же:
int t(int value) {
switch (value) {
case 1: return const_1;
case 3: return const_2;
case 4: return const_3;
case 8: return const_4;
default: return 0;
}
}
В настоящее время у него около 50 записей, возможно, позже будет еще несколько, но, вероятно, не более ста двух. Все значения предопределены, и, конечно, я могу упорядочить метки меток по их значениям. Итак, вопрос в том, что будет быстрее - этот подход или поместить это в хэш-карту (у меня нет доступа к std:: map, поэтому я говорю о пользовательской хэш-карте, доступной в моем SDK) и выполняю поиск в этой таблице? Может быть, это немного преждевременная оптимизация, хотя... Но мне просто нужно ваше мнение.
Спасибо заранее.
ИЗМЕНИТЬ: мои значения будут находиться в диапазоне от 0 до 0xffff. И в отношении лучшей читаемости хэш-карты. Я не уверен, что он действительно будет иметь лучшую читаемость, потому что мне все равно нужно заполнить его значениями, так что отображение содержимого констант должно быть где-то в моем коде.
EDIT-2. Многие полезные ответы уже были даны, большое спасибо. Я хотел бы добавить информацию здесь. Мой хэш-ключ является целым числом, а моя хэш-функция для целого - это просто одно умножение с интегральным переполнением:
EXPORT_C __NAKED__ unsigned int DefaultHash::Integer(const int& /*aInt*/)
{
_asm mov edx, [esp+4]
_asm mov eax, 9E3779B9h
_asm mul dword ptr [edx]
_asm ret
}
Так что это должно быть довольно быстро.