Одна очень простая оптимизация состоит в том, что вместо switch / case / case / case / case / case,
просто определите массив с указателями на функции (где каждая функция будет обрабатывать указанную команду или парукоманды, в этом случае вы можете установить несколько записей в массиве для одной и той же функции, а сама функция может проверить точный код), и вместо
switch(cmd)
просто выполните
array[cmd]()
Это означает, что у вас не слишком много команд.Кроме того, сделайте некоторую проверку, если вы не определите все возможные команды (возможно, у вас есть только 300 команд, но вы должны использовать 2 байта для их представления, поэтому вместо определения массива с 65536 элементами, просто проверьте, меньше ли командачем 301, и если это не так, не ищите)
Если вы этого не сделаете, по крайней мере, сортируйте команды, которые наиболее часто используются в начале оператора switch.
В противном случае было бы полезно изучить хеш-таблицы, но я предполагаю, что у вас не так много команд, и в этом случае накладные расходы на выполнение хеш-функции, вероятно, обойдутся вам дороже, чем отсутствие переключения.(Или есть ОЧЕНЬ простая хеш-функция)