WeakAuras

WeakAuras

206M Downloads

Focus frame bars performance issues

TrojanPanda2 opened this issue · 5 comments

commented

Describe the bug
I've been having major framerate drops in BoD when fighting the Blockade trash and boss, triggering every time something dies. I use custom WA health/power bars for my player, target and focus frames. After discussing it with experts on the WeakAuras discord server, I believe it has something to do with how my focus frame health/power bars update. (Edit: I didn't have any unit set to focus throughout the bug's occurrences)

One expert replied, "Yeah, there's a lot that could be tidied up there but I don't see a clear reason for focustarget working that hard. AFAIK UNIT events don't fire for the unit focustarget so I'm not sure how WA handles that but looks like it probably does something like checking every unit event for UnitIsUnit(unit, "focustarget") or something. I would actually suggest you ticket this to be looked at by the devs."

Do you have an error log of what happened?
No, but I did run a profile and noticed a huge uptime with specific WAs.
https://pastebin.com/vzcLtkR7

Total time attributed to auras:
FocusTar HP 41803.24ms, 36.91%
FocusTar Power 40839.25ms, 36.06%

To Reproduce

  1. Enable WeakAuras
  2. Load FocusFrame group
  3. Engage Blockade trash/boss
  4. Kill anything

Did you try having WeakAuras as the only enabled addon and everything else (especially something like ElvUI) disabled?
Yes, and the only time the FPS drops didn't happen is when WeakAuras was disabled, even with everything else enabled.

Which version of WeakAuras are you using?
2.11.6

Was it working in a previous version? If yes, which was the last good one?
I've experienced this problem since BoD went live, exclusively in the Blockade area.

Additional context
Focus frame WA group: https://wago.io/su9KTxIbU
If the pastebin and/or wago expire by the time you look into this, I'll submit new ones.

commented

We can pass this on to the blizzard devs, sure. But unit events are already a known performance issue in raids (which is supposedly slated to be fixed in 8.1.5), and we dont actually treat any unit differently in the health or power triggers. You should see similar performance if you swap “focustarget” with eg “player” or “mouseover”.

I’m inclined to leave this ticket open until 8.1.5, though, just in case Blizzard’s claims turn out to not bear fruit.

commented

More events are listened depending on the unit set in trigger

local function AddUnitChangeEvents(unit, t)
  if (unit == "player" or unit == "multi") then

  elseif (unit == "target") then
    tinsert(t, "PLAYER_TARGET_CHANGED");
  elseif (unit == "focus") then
    tinsert(t, "PLAYER_FOCUS_CHANGED");
  elseif (unit == "pet") then
    tinsert(t, "UNIT_PET")
  else
    tinsert(t, "PLAYER_TARGET_CHANGED");
    tinsert(t, "PLAYER_FOCUS_CHANGED");
    tinsert(t, "UNIT_TARGET");
    tinsert(t, "INSTANCE_ENCOUNTER_ENGAGE_UNIT");
    tinsert(t, "GROUP_ROSTER_UPDATE");
  end
end

I guess the problem here is that unit=focustarget will listen to UNIT_TARGET, without filter, and when a mob die you have a lot of unit switching target + the blizzard UNIT_* duplicating event bug, that can make a lot of trigger update at once

commented

Sure. But that limitation is exceptionally unlikely to change.

commented

I should also point out that I didn't have any unit set to focus throughout the bug's occurrences. Is there anything I can modify in Mrbud's quoted LUA that would reduce the trigger spam?

commented

I did a change that should optimize how this behaves, and will sidestep the Blizzard issue.