Just looking quickly, I'd say that this part of your code is generating a lot of garbage every time you call it:
Code:
if (KeybindsHide == 1) then
for i=1,12 do _G["ActionButton"..i.."HotKey"]:SetAlpha(0)end;for i=1,12 do
_G["MultiBarBottomRightButton"..i.."HotKey"]:SetAlpha(0)end;for i=1,12 do
_G["MultiBarBottomLeftButton"..i.."HotKey"]:SetAlpha(0)end; for i=1,12 do
_G["MultiBarRightButton"..i.."HotKey"]:SetAlpha(0)end; for i=1,12 do
_G["MultiBarLeftButton"..i.."HotKey"]:SetAlpha(0)end; for i=1,12 do
_G["BonusActionButton"..i.."HotKey"]:SetAlpha(0)end;
end
if (MacroTextHide == 1) then
for i=1,12 do _G["ActionButton"..i.."Name"]:SetAlpha(0)end;for i=1,12 do
_G["MultiBarBottomRightButton"..i.."Name"]:SetAlpha(0)end;for i=1,12 do
_G["MultiBarBottomLeftButton"..i.."Name"]:SetAlpha(0)end; for i=1,12 do
_G["MultiBarRightButton"..i.."Name"]:SetAlpha(0)end; for i=1,12 do
_G["MultiBarLeftButton"..i.."Name"]:SetAlpha(0)end; for i=1,12 do
_G["BonusActionButton"..i.."Name"]:SetAlpha(0)end;
end
Every time this is called it finds 144 frames then throws away their name. You might want to just do it once and store all of the frames in a table, then iterate over that table every time.
Looking a little farther down, it seems this is how you call most of your _G frames. Like I said before, I'd save them once then use the saved value so you don't generate garbage every time you call the function.