I am currently working on an idea I had and I would just like some feedback and comments from the modding community. Blizzard code is generally inefficiently written so I started replacing code. The major issue was it wasn't actually speeding anything up since the old code was still in memory. So I started nil'ing out replaced functions and made a fun little piece of code to delete frames. Now my goal is to replace the Blizzard UI altogether and eventually I hope to be able to actually delete UIParent. With 2.0 out I forsee a few issues but with the action bars done I doubt that it's anything I can't handle. Aside from a few files such as GlobalStrings.lua and the SecureFrameTemplate files I should be able to remove everything. Just looking for comments or possible problems anyone forsees.
Tainting issues makes replacing all of Blizzards code impossible, not to mention that you wont be able to basically do anything with slash commands.
Overall the base interface is a very small performance and memory hit, you will never be able to rewrite it to be faster then it currently it because 1) It's going to be incompatible with any change that happens and 2) It's going to break basically every other addon that exists.
You'll see a far better performance/memory increase in disabling your addons then you will recoding the UI.
I understand I'm going to need select portions of blizzard code for this to work. But most of it can be replaced altogether without any ill effects. Yes, the speed increase is going to be insignificant but any speed increase is helpful. Isn't that the point of Ace? to make code as efficient as possible? Why should we stop at our own code if blizzards can be improved as well? And as far as performance goes, my mods already load faster and with less memory usage than the default blizzard UI. So disabling my mods would actually slow down the game.
Efficiency isn't the only Ace ideal, so is playing well with others. When you muck with a global/blizzard bit of code you have to be extra careful. You're opening yourself up for a lot of compatibility issues.
A better route would be to submit efficiency patches to slouken, he's very open about accepting patches to the default UI, they just have to quality check em first.
I doubt slouken would approve of what I'm doing to replace the blizzard UI. Most of it is replacing slow calls such as getglobal with cached values and taking out repetitive code like OnUpdate events that really don't have to be executed every frame.
OH YEAH BABY! More efficient code! Where do I sign up for betatest?
Talk is cheap. Give us an example of what you use to make Default UI faster.
Otherwise people will just think that you're a local troll and feed you until you hibernate.
As much as I hate being called a forum troll I guess I expected it considering what I'm proposing. It's no surprise that triggering multiple OnUpdate events is slower than a single event. So why not expand that and use a single OnUpdate and a single OnEvent function which would then point off to the other functions as needed. It's no surprise that I can load a mod with less memory and CPU power. I'm removing all blizzard code from memory that I don't need. That includes OnUpdate events which save CPU during load. It's quite a simple concept and shouldn't be that hard to accept.
The one thing people completely ignore now and days is knowing when to give up efficency for usability or expandability.
Being able to get an extra 0.0001 execution time on code thats ran whenever you change targets isn't very useful if it makes it so nobody else can expand or even understand waht you did, you're looking at the wrong places to improve if you think Blizzard UI is the main issue of inefficency/memory.