Estoy considerando la implementación de una máquina de estado finita no trivial (especificada como un gráfico de estado jerárquico UML) en un MCU de 32 bits con gcc.
¿Hay alguna regla general que funcione mejor y que funcione menos bien? Mi intuición dice que una implementación basada en conmutadores (o incluso goto calculada) debería tener un poco más de rendimiento, mientras que una tabla de transición basada en punteros de función generalmente tiene la reputación de ser más mantenible.
También: alguien ha evaluado Boost MSM para incrustar aplicaciones? Sé que a Boost MSM generalmente se le aclama por ser muy eficiente, pero para aplicaciones integradas, la eficiencia se puede medir de manera diferente a como lo hace en el mundo de la programación de PC.
¿Alguien sabe cómo es el motor de máquina de estado compilado de MSM? ¿Más como un switch jumptable o más como una tabla de transición de puntero de función? ¿Utiliza la asignación de memoria dinámica o puede usarse estáticamente?