QuantumLeaps / qpc

QP/C Real-Time Embedded Framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
https://www.state-machine.com/products/qp
961 stars 251 forks source link

What do you think about Boost.SML ? #11

Closed icodk closed 2 years ago

icodk commented 3 years ago

There are many state machine implementations and it is actually hard to find out which is the best. I bought your book Practical UML statecharts In C/C++ a while ago and got a lot of insight into the subject. I recently came a cross Boost.SML ( https://www.youtube.com/watch?v=Zb6xcd2as6o) As far as I can see it is the most simple and performant state machine framework I know of.

https://boost-ext.github.io/sml/index.html

What do you think ?

lipi commented 3 years ago

QPC has very low memory footprint, its main target is microcontrollers, which often only have a few KBs of RAM and code space is measured in tens of kilobytes.

quantum-leaps commented 3 years ago

What do I think about Boost.SML or other similar approaches?

Frankly, I think that all such attempts are completely inferior to a good straightforward implementation like in QP/C or QP/C++ according to any criteria you might choose:

I would really challenge anybody to demonstrate any criterion under which Boost.SML or any DSL for state machines would outperform QP.

Even the referenced video "C++Now 2019: Kris Jusiak “Rise of the State Machines” shows clearly that the "simple switch statement" outperforms all Boost libraries and other such complex solutions in speed and memory use. This is the basis of performance for QP state machine implementation. But QP improves on the "simple switch statement" in terms of the other criteria.

--MMS