Если вам действительно нужна производительность, я думаю, вам не следует использовать строковое представление для вашей команды, а работать непосредственно с байтами. Четыре числа в строковом формате имеют размер 32 или 64 бита (в зависимости от того, какую кодировку вы используете), при этом одного байта достаточно для хранения четырехзначного числа. Использование большого количества веток (которые if
-выражения) также влияет на вашу производительность.
Мое предложение - зарезервировать префикс фиксированного размера в своем сообщении для команды. Затем вы используете эти байты для поиска в O (1) таблицы, какую команду вы должны выполнить, эта таблица может быть заполнена объектом, имеющим метод execute
. Таким образом, вы можете сделать что-то table[command].execute()
.
При этом, я не думаю, что выигрыш в производительности был бы таким большим, и что вам лучше (в обслуживании) использовать одну из библиотек сериализации.