Я смотрю на реализацию нетривиального конечного автомата (заданного как иерархическая диаграмма состояний UML) на 32-битном MCU с gcc.
Существуют ли практические правила, что работает лучше, а что - хуже? Моя интуиция говорит, что основанная на переключателе (или даже вычисленная goto) реализация должна быть немного более производительной, в то время как таблица переходов на основе указателя функции обычно считается более обслуживаемой.
Также: кто-нибудь оценивал Boost MSM для встроенных приложений? Я знаю, что Boost MSM обычно оценивается как очень эффективный, но для встроенных приложений эффективность может быть измерена иначе, чем в мире программирования на ПК.
Кто-нибудь знает, как выглядит скомпилированный конечный автомат MSM? Больше похоже на таблицу переключателей или больше на таблицу переходов указателя функции? Использует ли он динамическое распределение памяти или может использоваться статически?