Есть некая таблица преобразования, известная ещё на этапе компиляции. Содержит 10-20 значений типа int. Какого-либо математического закона преобразования нет, просто таблица.
Сейчас преобразование выглядит следующим образом:
int f(int a) {
switch (a) {
case X:
return M;
case Y:
return N;
case Z:
return K;
... ещё 10-20 case'ов ...
default:
return -1;
}
}
Выглядит громоздко. Как это можно реализовать лучше на plain C? Без привлечения сторонних библиотек. Можно запилить какую-нибудь самодельную реализацию хеш-таблицы (поскольку значения на этапе компиляции известны, запихнуть их в массив в отсортированном порядке, а затем в рантайме искать двоичным поиском). Таблиц преобразований несколько (но все по отдельности небольшие), так что на размере кода это должно сказаться благоприятно (ведь можно вынести поиск в отдельную функцию). Но будет ли это эффективнее по скорости, чем простой switch на небольшом объёме данных?