目前主線熱路徑候選人:
Main/EventAlert_Core.luaCOMBAT_LOG_EVENT_UNFILTEREDUNIT_AURABAG_UPDATE_COOLDOWNSPELL_UPDATE_COOLDOWNSPELL_UPDATE_CHARGESSPELL_UPDATE_USABLEACTIONBAR_UPDATE_COOLDOWNMain/EventAlert_Aura_Self.luaBuffs_UpdateOnUpdatePositionFramesMain/EventAlert_Aura_Target.luaTarBuffs_UpdateOnTarUpdateTarPositionFramesMain/EventAlert_Cooldown.luaOnSCDUpdateScdBuffs_UpdateUpdateScdFrameScdPositionFramesMain/EventAlert_ItemSpellCache.luaMain/EventAlert_SpecialPower.luaMain/EventAlert_CreateFrames.luaMain/EventAlert_EAFun.lua觀察到的主線使用情況:
EventAlert_Core.luaC_Timer.After(tempInterval, RecurringFrameUpdate)C_Timer.NewTicker(1 / GetFramerate(), function() ...) 用來查找EventAlert_Aura_Self.luaG:OnUpdate(spellId) 用於光環計時器刷新tempFunc = function() G.OnUpdate(spellId) end
C_Timer.After(delay, tempFunc)EventAlert_Aura_Target.luaC_Timer.After(delay, G.OnTarUpdate, G, spellId)EventAlert_Cooldown.luaC_Timer.After(nextInterval, G.OnSCDUpdate, G, sid)EventAlert_ItemSpellCache.luaC_Timer.NewTicker(0.01, function() ...)C_Timer.After(1, ProcessBatch) 用於批次掃描繼續EventAlert_SpecialPower.luaSetScript("OnUpdate", function(self, elapsedTime) ...)C_Timer.After 用於生命綻放刷新EventAlert_Util.luaLib_ZYF:StopOnUpdate(eaf)重寫規則:
使用 table.create 用於:
預設設定檔模板 避免在熱路徑中:
每個光環的瞬態表
table.insert 當直接數字索引分配就足夠了pairs/ipairs 其中確定性數字循環可用僅凍結:
切勿凍結:
渲染器必須快取最後渲染的值並跳過無操作寫入:
SetTextSetTextureSetAlphaSetCooldownSetPointSetSizeShow / Hide佈局應該是批量的:
在以下情況下,繁重的工作必須被阻止、延遲或降級:
InCombatLockdown() 為 true;允許的降級行為:
unknown、protected 或 displayOnly;首次透過審核發現了這些可能的來源:
AuraUtil.ForEachAura 回呼使用;C_Timer.After(function() ...) 閉包分配;目前主線熱路徑候選人:
Main/EventAlert_Core.luaCOMBAT_LOG_EVENT_UNFILTEREDUNIT_AURABAG_UPDATE_COOLDOWNSPELL_UPDATE_COOLDOWNSPELL_UPDATE_CHARGESSPELL_UPDATE_USABLEACTIONBAR_UPDATE_COOLDOWNMain/EventAlert_Aura_Self.luaBuffs_UpdateOnUpdatePositionFramesMain/EventAlert_Aura_Target.luaTarBuffs_UpdateOnTarUpdateTarPositionFramesMain/EventAlert_Cooldown.luaOnSCDUpdateScdBuffs_UpdateUpdateScdFrameScdPositionFramesMain/EventAlert_ItemSpellCache.luaMain/EventAlert_SpecialPower.luaMain/EventAlert_CreateFrames.luaMain/EventAlert_EAFun.lua觀察到的主線使用情況:
EventAlert_Core.luaC_Timer.After(tempInterval, RecurringFrameUpdate)C_Timer.NewTicker(1 / GetFramerate(), function() ...) 用來查找EventAlert_Aura_Self.luaG:OnUpdate(spellId) 用於光環計時器刷新tempFunc = function() G.OnUpdate(spellId) end
C_Timer.After(delay, tempFunc)EventAlert_Aura_Target.luaC_Timer.After(delay, G.OnTarUpdate, G, spellId)EventAlert_Cooldown.luaC_Timer.After(nextInterval, G.OnSCDUpdate, G, sid)EventAlert_ItemSpellCache.luaC_Timer.NewTicker(0.01, function() ...)C_Timer.After(1, ProcessBatch) 用於批次掃描繼續EventAlert_SpecialPower.luaSetScript("OnUpdate", function(self, elapsedTime) ...)C_Timer.After 用於生命綻放刷新EventAlert_Util.luaLib_ZYF:StopOnUpdate(eaf)重寫規則:
使用 table.create 用於:
預設設定檔模板 避免在熱路徑中:
每個光環的瞬態表
table.insert 當直接數字索引分配就足夠了pairs/ipairs 其中確定性數字循環可用僅凍結:
切勿凍結:
渲染器必須快取最後渲染的值並跳過無操作寫入:
SetTextSetTextureSetAlphaSetCooldownSetPointSetSizeShow / Hide佈局應該是批量的:
在以下情況下,繁重的工作必須被阻止、延遲或降級:
InCombatLockdown() 為 true;允許的降級行為:
unknown、protected 或 displayOnly;首次透過審核發現了這些可能的來源:
AuraUtil.ForEachAura 回呼使用;C_Timer.After(function() ...) 閉包分配;