我正在研究在具有gcc的32位MCU上实现非平凡的有限状态机(指定为UML分层状态图)。
是否有任何经验法则,哪些方法更好,哪些效果不好?我的直觉说,基于开关(甚至是计算的goto)的实现应该稍微更高性能,而通常认为基于功能指针的过渡表更易于维护。
另外:有人对嵌入式应用程序的Boost MSM进行了评估吗?我知道Boost MSM通常被认为是非常高效的,但是对于嵌入式应用程序,效率的衡量标准可能不同于PC编程领域。
有人知道MSM的编译状态机引擎是什么样吗?是更像开关跳转表还是更像函数指针转换表?它使用动态内存分配还是可以静态使用?
我会远离Boost MSM(和一般的C ++模板),因为它们会很快炸毁代码大小。
—
jms
C ++ 还有其他一些陷阱需要注意...
—
Matt Young
@jms这就像是在说wood夫应该远离锋利的工具,而要用锤子,因为with夫可能会割伤自己。模板是一种非常有用的工具,以正确的方式使用它可以提高速度并减少代码的大小,尤其是对于小型微控制器而言。如果以错误的方式使用-那么,任何工具都可能以错误的方式使用!
—
Wouter van Ooijen