Download
(15Kb)
Download
Updated: 10-31-20 05:39 PM
Pictures
File Info
Compatibility:
Shadowlands pre-patch (9.0.1)
Updated:10-31-20 05:39 PM
Created:05-21-09 02:32 PM
Downloads:4,275
Favorites:61
MD5:

Interface Usage

Version: 20.10.31
by: Aezay [More]

Description
Using this tool, you can find culprits in your World of Warcraft interface, that are slowing down the overall performance.

Each polling type is not initialised, and will thus not take up resources, until you select it in the drop down menu.
And nothing is initialised at all until you open the addon using the slash command.

Some of the polling methods will have an overhead once initialised, an example are the Frame OnEvent/OnUpdate modules.
They will hook many frames in your interface, and may slow things down a little. So it's best to reload the UI when done testing.

Once a polling method has been initialised, you can close the window, and it will still gather data in the background.

Slash command for this tool is "/iu".

Polling Modules (8)
Currently, eight polling moduels exists for this addon.

<Addon Memory Usage>
Shows the memory usage of all addons.

<Addon CPU Usage>
Measures how much CPU time each addon uses. The option "Script Profiling" must be enabled for this polling to work.

<Addon Spam by Prefix>
Shows how many addon messages each addon does.

<Addon Spam by Player>
Shows how many addon messages you get from who.

<Addon Spam by Channel>
Shows how many addon messages you get per channel.

<Event Calls>
Shows how many times each event is dispatched to a frame.

<Frame OnEvent Usage>
Hooks all frames in the user interface that has an "OnEvent" script, and measures how much time they spend running this function.

<Frame OnUpdate Usage>
Hooks all frames in the user interface that has an "OnUpdate" script, and measures how much time they spend running this function.

Lacking Features, Ideas & Problems
- Customisable polling interval.
- Column header text.

Interface Usage Changes | 2020 Oct 31
- Updated the TOC version to 90001 for the Shadowlands 9.0.1 pre-patch.
- Frames that use backdrops are now created using the "BackdropTemplate".
- Updated the AzDropDown library to Rev 14.

Interface Usage Changes | 2018 Aug 12
- Updated the TOC version to 80000 for the Battle for Azeroth 8.0 pre-patch.
- Added column headers, clicking them will sort items by the column clicked.
- Added slash command "/iu interval <seconds>", which sets how often the polling is done.
- Removed the "Include.xml" file, all required files are now referenced from the toc file.

Interface Usage Changes | 2010 Nov 13
- Changed the TOC version to 40000 for the 4.0.1 pre Cataclysm patch.
- If you're mousing over an entry, the tooltip now updates when polling data is updated.
- EventCalls: Added a "raw count" value, which is the true number of dispatched events, while the other "total count" value is the total number of frames who received the event.

Interface Usage Changes | 2010 Feb 27
- Changed the TOC version to 30300 for the 3.3 patch.

Interface Usage Changes | 2009 May 24
- The FrameScript modules (OnUpdate/OnEvent) now has a new column showing how many times the script function was called.
- Added three new polls, "Addon Spam by Prefix", "Addon Spam by Player" and "Addon Spam by Channel". They basically do the same, but having three, makes it easier to narrow down where the spam comes from.
- No polling module is initialised by default anymore, you have to select one from the drop down list.
- Modules: Default column alignment changed from "LEFT" to "RIGHT".
- Modules: Column offsets are now based on the previous column's offset, instead of zero.
Optional Files (0)


Post A Reply Comment Options
Unread 11-02-20, 06:47 AM  
Aisenfaire
A Murloc Raider

Forum posts: 6
File comments: 394
Uploads: 0
Thank you for the update!
Report comment to moderator  
Reply With Quote
Unread 10-19-20, 05:34 PM  
Aisenfaire
A Murloc Raider

Forum posts: 6
File comments: 394
Uploads: 0
Getting the following errors now in the pre-patch :

Code:
Message: Interface\AddOns\InterfaceUsage\InterfaceUsage.lua:143: attempt to call method 'SetBackdrop' (a nil value)
Time: Mon Oct 19 16:33:13 2020
Count: 1
Stack: Interface\AddOns\InterfaceUsage\InterfaceUsage.lua:143: attempt to call method 'SetBackdrop' (a nil value)
[string "@Interface\AddOns\InterfaceUsage\InterfaceUsage.lua"]:143: in main chunk

Locals: modName = "InterfaceUsage"
iu = InterfaceUsage {
 PollTypeData = <table> {
 }
 0 = <userdata>
 CreatePollType = <function> defined @Interface\AddOns\InterfaceUsage\InterfaceUsage.lua:112
 SetPollingIndex = <function> defined @Interface\AddOns\InterfaceUsage\InterfaceUsage.lua:72
}
ITEM_HEIGHT = nil
NUM_ITEMS = 20
COLOR_ITEM_DEFAULT = <table> {
 1 = 1
 2 = 1
 3 = 1
}
COLOR_HEADER_NORMAL = <table> {
 1 = 1
 2 = 1
 3 = 0
}
COLOR_HEADER_SORTED = <table> {
 1 = 0
 2 = 1
 3 = 0
}
SELECT_POLLING_METHOD = "Select Polling Method..."
updateInterval = 1
pollData = nil
PollTypeData = <table> {
}
EntryList_Update = <function> defined @Interface\AddOns\InterfaceUsage\InterfaceUsage.lua:31
SortFunc = <function> defined @Interface\AddOns\InterfaceUsage\InterfaceUsage.lua:60
OnUpdate = <function> defined @Interface\AddOns\InterfaceUsage\InterfaceUsage.lua:123
(*temporary) = nil
(*temporary) = InterfaceUsage {
 PollTypeData = <table> {
 }
 0 = <userdata>
 CreatePollType = <function> defined @Interface\AddOns\InterfaceUsage\InterfaceUsage.lua:112
 SetPollingIndex = <function> defined @Interface\AddOns\InterfaceUsage\InterfaceUsage.lua:72
}
(*temporary) = <table> {
 bgFile = "Interface\ChatFrame\ChatFrameBackground"
 tileSize = 16
 edgeFile = "Interface\Tooltips\UI-Tooltip-Border"
 tile = 1
 edgeSize = 16
 insets = <table> {
 }
}
(*temporary) = "attempt to call method 'SetBackdrop' (a nil value)"
Code:
Message: (null)
Time: Mon Oct 19 16:33:13 2020
Count: 3
Last edited by Aisenfaire : 10-19-20 at 05:35 PM.
Report comment to moderator  
Reply With Quote
Unread 01-17-20, 09:06 AM  
Narfi
A Murloc Raider

Forum posts: 7
File comments: 15
Uploads: 0
Classic

Hey,


seems to work with Classic, great

Regards
Report comment to moderator  
Reply With Quote
Unread 05-01-10, 08:52 AM  
Aezay
A Theradrim Guardian
 
Aezay's Avatar
AddOn Author - Click to view AddOns

Forum posts: 66
File comments: 737
Uploads: 18
Invision
I realise the following may be a little technical, but I just wanted to say it on record, so I wont forget it if I return to WoW one day, and can actually add this.

If I remember correctly, I saw this too when I was working on this addon, the COMPANION_UPDATE event is fired a lot.
The polling module Event Calls, can be a little misleading though. What happens is, for each frame that receives this event, the counter for that event in Interface Usage is increased. This is misleading because if there are 1000 frames in the UI that has this even registered, one single event fired by WoW, will show as 1000 in Interface Usage.
This would be fixable easily by adding another column to the Event Calls polling module, that uses the function frame:RegisterAllEvents() to only record the events once per event dispatch.

A specific answer to your question would be something like this though:
The Pets tab on the character sheet, has 8 icon buttons I think? Each of those buttons will have this even registered, so you have to at least divide that number by 8. In addition, you may have a few other addons which registers this event. Don't worry too much about this, I doubt it's something that will hamper your performance.
Last edited by Aezay : 05-01-10 at 08:53 AM.
Report comment to moderator  
Reply With Quote
Unread 04-29-10, 10:17 AM  
Invision
A Kobold Labourer

Forum posts: 0
File comments: 5
Uploads: 0
I was wondering if any of you could shed some light on this

http://img576.imageshack.us/img576/1092/unavngivet2.png

The amount of times COMPANION_UPDATE being called seems slightly high, is there any way of finding the culprit without disabling an addon and checking if it persists?

Thanks.
Report comment to moderator  
Reply With Quote
Unread 03-10-10, 11:08 AM  
Aezay
A Theradrim Guardian
 
Aezay's Avatar
AddOn Author - Click to view AddOns

Forum posts: 66
File comments: 737
Uploads: 18
Gregory
The frames being shown like that are the ones without a name. There is not really anyway to see what they belong to, although I guess one could see if the frame's parent had a name, or the parent's parent and so on, until you got a name that might be traceable to what addon it belongs to.
If I were still playing WoW, this would be a nice thing to add, I'll put it on the todo list.
Report comment to moderator  
Reply With Quote
Unread 03-08-10, 05:20 PM  
Gregory
A Kobold Labourer

Forum posts: 0
File comments: 76
Uploads: 0
Hello, Aezay !

In Frame OnEvent/OnUpdate Usage modes it show some frames as table:[hex]. Is it possible to track somehow which addon that table belongs too ?
Report comment to moderator  
Reply With Quote
Unread 02-28-10, 02:38 PM  
Aezay
A Theradrim Guardian
 
Aezay's Avatar
AddOn Author - Click to view AddOns

Forum posts: 66
File comments: 737
Uploads: 18
Lombra
Glad you like it
It's actually a pretty old addon by now, but I just never developed much on it. Still wish I had added the column headers, because it's a little confusing without.
Report comment to moderator  
Reply With Quote
Unread 02-27-10, 10:56 AM  
Lombra
A Molten Giant
 
Lombra's Avatar
AddOn Author - Click to view AddOns

Forum posts: 554
File comments: 271
Uploads: 24
I love your addons. I use Examiner and Lua browser, and this one looks very promising, too. Both functionally and visually. Keep it up.
__________________
Grab your sword and fight the Horde!
Report comment to moderator  
Reply With Quote
Unread 05-21-09, 03:47 PM  
thefrogi
A Murloc Raider

Forum posts: 7
File comments: 14
Uploads: 0
Very nice and sleek looking mod. Good job.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.