I installed knameplates (r19) a couple of weeks ago, along with many other things, and was very happy about it. However, about at the same time, I started to notice severe performances degradation sometimes, at the end of some raid nights (Putricide, Lana'thel, Festergut fights mainly, we clean almost all of icc on thursday and ends up with the Plague hall).
Using KPM, I measured resources consumptions of my addons to identify the culprit during Putricide fight. I was shocked to discover that knameplates came first, by far, with 40% of the main core usage ! This was especially surprising since I only display enemy frames. KPM reported this was caused by the bits of code reacting to events, not to OnUpdate. I play a warrior. The second addon in line was Vuhdo with only 8% of main core CPU.
So I gave a look at the code. I noticed that, on any event, you perform a full frame update. However, there can be many events between two successive frames. Seems like it would be better, on events, to just flag for update ("update_required = true" for example) and, on every OnUpdate call, to check this flag and perform the actual update when required.
Besides, since you force the Bli² nameplates to subscribe new events, I'm not sure those frames are garbage collected. I guess, at the end of the night, anytime someone gains an aura in the raid or among foes, updates are triggered for hundreds of left frames. Again, flagging for updates would solve most of the problem since OnUpdate is never called for hidden frames.
Also, you could save a lot of updates if you were just performing some more checks on events : for a warrior, you subscribe UnitAura just for monitoring sunders. So you could check the unit whose auras changed is the player's target. Or even allow us to disable that sunders and combo points display to prevent UnitAuras subscriptions. In the same way, you update threat on every frame rather than just when the client receives updated threat informations.
You created this addon to be a lightweight version of Aloft. It certainly uses 1.5 MB less memory than Aloft (out of my 4GB) but, in its present state, it seems you totally missed the point in the end. Hope I don't look rude, your addon is promising and I like it but, unfortunately, I will have to fix it or use Aloft instead, should its code be more optimized. :-(
To post a comment, please
or register a new account.