J'ai récemment frappé un mur de performance sévère dans un modèle AnyLogic et j'ai décidé de faire un profilage de méthode. Le coupable de haut niveau était com.anylogic.engine.Engine.mc()
, mais qu'est-ce qu'il fait, et comment pouvons-nous l'accélérer?Qu'est-ce que Engine.mc() et pourquoi ralentit-il mon modèle?
0
A
Répondre
1
Il m'a expliqué que com.anylogic.engine.Engine.mc()
est où les conditions dans les événements et les transitions sont vérifiées. Si Engine.mc()
vous ralentit, vérifiez vos événements et conditions de transition!
2
Idéalement, n'utilisez jamais de transitions conditionnelles, uniquement basées sur des messages, basées sur des délais d'attente et sur les arrivées d'agents. Sinon, votre transition basée sur les conditions continue de vérifier tout le temps si sa condition a déjà été remplie.
D'accord! Cela a tendance à être l'optimisation que j'utilise après que j'ai clairement exposé mes pensées dans un diagramme d'état. Dans le modèle qui a déclenché ce Q & R, je n'avais pas remarqué que j'avais laissé une transition conditionnelle. Je payais vraiment pour la vitesse d'exécution et je ne voulais pas voir les autres se faire prendre dans le même piège. J'espère que nos commentaires aideront les autres à l'avenir! –
Salut Dylan, je ne vous ai pas vu être l'auteur (et le répondant) :-) – Benjamin