You may not believe it, but addons are severely limited in what they can do. Mostly, they are driven off of "events" which they can react to, or they’re re-imaging of something that already exists.
Warning, technical bits
Addons that have a lot of animation or fast reacting indicators, such as cast bar replacements ala Quartz, usually trigger off of an event called "OnUpdate". It fires every time the current "frame" (i.e. your screen) updates, and it’s the only event of its kind. Thus, the higher your FPS ("Frames per Second"), the more often this guy fires. If you have low FPS, all animations tend to be choppy, including your addons.
Because it fires so often and is at the heart of your FPS, OnUpdate even "handlers", such as the code routine that updates your cast bar, are supposed to be kept small and focused. All the stuff that sets the texture, size, position, and other frippery associated with the cast bar, for example, will be done elsewhere. We try to restrict the OnUpdate handler, in this case, to calculating and drawing the cast bar, nothing else, and then handing off to the client so it can get about the business of rendering. If we put stuff here that takes a long time to do, it will drag the system FPS down.
What this means to you
There are a few conclusions you can draw with this knowledge.
The addons you have loaded will affect your client’s performance. Furthermore, those with no OnUpdate handler will impact performance far less than those that use one. I don’t suggest you learn to read LUA source code as much as be familiar with what addons are high-impact with animations and critical indicators, such as Quartz or any unit frame addon. The more of these you have, the more delay there is in rendering each frame, until your FPS starts to decline.
You can’t eliminate this, but you can mitigate it.
The fewer, the better
The first principle is that the more active addons you have, the less responsive your client will be. So if you can eliminate addons that you don’t really need, that will help performance. Sometimes it’s a matter of disabling those that you only use from time to time, such as MogIt – which does have some real-time components, but nothing you need in the middle of a raid.
Comparative testing of addons is a must, to eke out every bit of performance. The best approach is to get a little FPS addon (or just use CTL+R to turn on the built-in one), then find a quiet place to test your candidates. For example, all else being equal, try each HUD addon and look for dramatic drops in FPS. Any obvious outliers can be given the boot.
A good place to test your candidates is in the entrance of just about any instance. Avoid those with a lot going on – e.g. Violet Hold or ICC – and opt instead for those that have nice, quiet staging areas, like Karazhan.
All other things being equal, if your client’s main issue is with framerate under load, a simple video card upgrade may do the trick. I’m running a Radeon 5000 series card which I purchased for under $100 over a year ago, and get on average 30 fps in cities. I have a lot of problems in 25- and 40- man raids, though. Purchasing another identical card and coupling it with the one I have already will improve matters a lot, and that will also improve the performance of all my high-impact addons.
Or, I could upgrade to the next tier of Radeon, a 6000 or 7000 series, whichever is available in my price range from my favorite vendor (I prefer Gigabyte solid cap boards because electrolytes are icky)1.
It isn’t just WoW that will improve, I’ve found. So many apps and games use similar mechanics for updating high-activity visual components that a nice video card upgrade.
So, protip – if you buy to last, you can stretch a PC’s life a long time with video card upgrades.
- Example only, but oho, looky, under $100! [↩]