I was running a performance comparison between DragonBonesAS and flump by converting the same flash animation to both systems and running the Adobe Scout over a test harness running 100 instances of the animation, once with DragonBonesAS and once with flump.
flump was outperforming DragonBonesAS, so I took a deeper look into the data and found that the reason is that DragonBones incurs a large cost by always "fading out" AnimationStates to remove them, even if the fadeTime is 0.
As a test, I wrote a wrapper that simply directly called Animation.removeState whenever the fadeTime to fadeOut is 0, as well as a minor shortcut for fadeIn, again when the fadeTime is 0. The result was an improvement in performance of 15% with my test object and an improved and more stable garbage collection profile.
Data description: My DragonBones animation includes nested armatures, and including one instance of a "flipbook" like layer which switches between different images.
I am happy to prepare a pull request with a clean implementation of this optimization, but I have a question to ask before doing so: Is it desirable that AnimationEvent.FADE_IN_COMPLETE and AnimationEvent.FADE_OUT_COMPLETE fire when there is in fact no fading (fadeTime = 0)? It is my opinion that this is undesirable. That said, changing this would represent a change from the current behavior, so I am happy keep it or change it as you prefer.
Looking forward to your reply.
Ken