Mais l'argument des performances me semble limite :
- le dispatching (retrouver la state_machine qui correspond à un event en particulier) sera probablement presque aussi coûteux que les tests (si tu utilises un vector<state_machine> et que l'event te retourne un index dans le vecteur)
- la plupart de tes events ne déclencheront probablement pas de transition. Ce qui revient à dire que la plupart des events consomment du temps pour rien. Mais c'est le boulot de la machine à états d'être efficace dans le traitement des events. En voulant "pré-traiter" les events, tu piques un peu de la responsabilité de la machine à états.
-
jamais, jamais, jamais et jamais faire de l'optimsation sans avoir vérifier que c'est nécessaire ! Écris ton code de base en laissant les machines à états faire leurs boulots. Et si tu vois qu'il y a une perte de performance quelque part, tu améliores après (et comme tu as bien réfléchi à ta conception et que tu respectes les principes de la
POO, l'évolution de ton code est très simple).
Partager