[question] Scan Tooltips slowdown (mailbox)
tflo opened this issue · 74 comments
This is not directly related to Syndicator tooltips, but it involves them as well.
But Syndicator is not the reason I am asking here, rather I have learned that you are very familiar with the API and are a very good and experienced coder.
IIRC, the problem started with the revamp of the tooltip API, around 10.0.2 or so (see also e.g this thread):
When I'm in the mailbox and retrieving mail, the more addons that add to the tooltip, the slower the retrieval.
This is more pronounced when you have a lot of single attachment mails in your inbox, and it is extreme when you have an inbox full of pet cages (e.g. after hundreds of my pet auctions have expired).
To reproduce:
Stage 1: Normal items (tolerable):
- Have addons enabled that add info to the tooltip (and have the tooltips of those addons enabled): like TSM, Syndicator, Auctionator, Journalator, ItemVersion, Oribos Exchange, …
- Have a good quantity of mails with attachments in your inbox, preferably one or only few attachments per mail.
Do you notice a slowdown when retrieving the mails?
Stage 2: Pet cages (unplayable):
- As point 1 above, but now also the battle-pet-tooltip addons count, so: Have addons enabled that add info to the tooltip (and have the tooltips of those addons enabled), like TSM, Syndicator, Auctionator, Journalator, ItemVersion, Oribos Exchange, BattlePetBreedID, BattlePetCountNG, …
- Have an inbox with many (e.g. 60 or more) mails with pet cages as attachment.
You should now get a delay of about 1.5 or 2 seconds per retrieved mail.
…
My current solution to this problem is to disable all tooltip additions of all eligible addons (event-triggered when I open the mailbox, restored when I close it).
This works 100% fine, but it is still a workaround, and a pretty brutal one at that. And of course I had to hardcode the toggle for each addon (just hiding the tooltips doesn't help).
So, the question of all of this:
Do you have any idea why this is happening? Is it a bugged/flawed API, or is it that every addon that adds to the tooltip is doing it the wrong way? (e.g. not properly using the current, i.e. post-10.0.2-API)
There is the noteworthy post by @Xruptor (BagSync author) at the end of the aforementioned thread, which basically says that the battle pet link is resolved at fetch time due to an API/concept flaw, and that this is the root of the problem.
The huge slowdown is indeed with pets in the inbox, but there is also a slowdown with other items, so I still suspect that this is not the whole story…
This has 2 parts:
Inventory tracking
- The pet issue is because only way to get the battle pet information for the inventory tracking (so Bagsync, Arkinventory, Bagnon, Syndicator) or Journalator mail logging is to request the tooltip data on each mailbox refresh, so what you're seeing is the effect of opening the tooltip of every single caged battle pet on each mailbox update.
- The attachment issue is because all inventory tracking addons are scanning all the attachments each time the mailbox refreshes, causing lots of item data loading.
Some of the addons you are disabling won't be responsible for the the slowdown, BattlePetBreedID, Auctionator, ItemVersion, Oribos Exchange, BattlePetCountNG
However, to get the pet information for the logs I know that Syndicator and Journalator request the battle pet tooltip data via the tooltip APIs, and checking BagSync they do the same.
The pet issue is because only way to get the battle pet information for the inventory tracking (so Bagsync, Arkinventory, Bagnon, Syndicator) or Journalator mail logging is to request the tooltip data on each mailbox refresh, so what you're seeing is the effect of opening the tooltip of every single caged battle pet on each mailbox update.
So, what @Xruptor had said (API flaw)
The attachment issue is because all inventory tracking addons are scanning all the attachments each time the mailbox refreshes, causing lots of item data loading.
Hence another API flow, we can't do anything against(?) There is no way to specify "tooltips but not mail scanning tooltips", right?
And how accurate do you want the tracking to be? So ie. is skipping over pets acceptable?
If it doesn't work inside TSM mail, it doesn't matter, because, even with my brute-force fix (disable all TT lines from addons) TSM is still slower than Blizz mail. So, when I have the inbox full of stuff I simply do not use the TSM UI anyway.
Basically there's a choice:
Do you want mailbox contents tracking or not?
What do you mean with that?
If it's having scan tooltips while retrieving mail, then ofc I do not want that.
For pets it only supplies the pet cage ID (82800) by default, and scanning the tooltip is necessary to get the species ID.
For other attachments they don't use tooltip scanning (or at least they shouldn't), but loading all the item data for a full inbox can can take a noticeable amount of time <0.2s
For pets it only supplies the pet cage ID (82800) by default, and scanning the tooltip is necessary to get the species ID.
OK
For other attachments they don't use tooltip scanning (or at least they shouldn't), but loading all the item data for a full inbox can can take a noticeable amount of time <0.2s
When having a mailbox full of items (not pets), do you notice a delay when having TT addons (TSM, Syndicator, Oribos, …) enabled?
Edit: Added TSM, as it makes an impact.
Update: I've added a command
/syn c lazy_mailbox_scanning true
to get the open/close mailbox scanning that I've made in the alpha here. The lazy scanning won't be enabled by default.
Ok. I've had a look at the guild bank, there isn't a way to remove the pet tooltip scanning without breaking multiple Baganator features, including the pet breed ID display.
OK, another fragment of memory comes back: The symptom described was most likely in the times when you changed from Baga to Synd, which was also the time when I adapted my addon to exclude the Synd tooltips. On that day, when I noticed that the Baga tooltips were no longer excluded (bc I haven't updated my script), i also saw those doubled baga tooltips in the scan tooltips.
But … maybe better treat this as non-existant, and be sure I'll report back as soon as see it. And usually I make a screeenshot of every crap…
Try it with this:
Syndicator-13-1-g1a494bc.zip
Guess I'll have to "try" it with everything else disabled and with a mailbox full of stuff…
Basically the change is to only scan the mail box when you open it, and when you close it, doing nothing in the interim
This sounds like something I would have expected to be like that…
Gonna try to try it…
Well, it's nearly impossible to test this. As I havn't done any isolated tests with TSM XOR Syndicator before… My reports were referring to whether tooltip-adding addons were enabled (not individually).
Will try to figure out some results nevertheless…
I have been mentioned in this thread. XD
The scanning of the mailbox and subsequent delay is because of the fact that ALL battlepets are shown as generic ItemID 82800. Which is just https://www.wowhead.com/item=82800/pet-cage
That gives us no details about the battlepet at all. Therefore, in order to grab the required information, each one has to be parsed as a tooltip. This not only causes a delay but the MORE battlepets in the mailbox the worse it becomes. I would like to point out that this delay is also reflected in the guild banks. Which blizzard once again treats as generic itemID 82800 when pulling slot information.
It can be somewhat reduced if the scanning is done in chunks rather then all at once. Meaning 10 at a time or something, then pause and queue up another set. Possibly adding some sort of notification for the user letting them know the status of the parses. Such a system should really only be used if an excessive amount of battlepets are found in the mailbox.
Hope this helps.
Nah, I had an inbox with ~25 pets (normally this makes already a noticeable slowdown), I reloaded w/o TSM (but with Synd), and the inbox content went in OKishly. But maybe it was like that before, I do not know.
For testing, is it sufficient to just use the Blizz MailBox, or do I have to unload TSM?
The more addons parse the data the more delays you will experience. This data isn't shared across addons so each one would be trying to pull it's own battlepet information by querying the server. Hence why there is such a long delay.
There are technical workaround and what not we can do, but ultimately the delay will be there in some shape or form. If anything Blizzard should at least provide us with the CreatureID or some such, which they don't. BattlePet information is generated on the fly with it's own unique codifier and link code. This actually changes each time the server is reset. That's why they aren't hardcoded like itemid for items and why they use a generic itemID of 82800 for them. They just aren't the same each time the server resets. I actually use a specially generated FakeID for them because of this.
Just using the blizz mailbox is enough.
You can test against older versions of Syn which should have the slowdown.
I would like to point out that this delay is also reflected in the guild banks
Yeah, this is absolutely true, forgot to mention this. Hi @Xruptor, btw :)
Not yet tested the posted alpha, another thing I haven't mentioned is those Synd tooltips that appear during a mail scan like doubled with a slight offset. This is a thing that does not happen with other tt additions, only seen it with baga/synd so far.
No. I outcommented Synd from my tt removal and I cancelled ~15 pet auctions just to have something in the inbox, but the outlinesque thingy wasn't there. Is it safe for my DB to go back to an older Synd (like 3d or so)?
No. I couldn't replicate it with the current version, and I rolled back to an 8 March version and couldn't either. I did have reeanbled the Synd tooltips in my addon.
But in case it helps, the facts: it was like the Baga/Synd tooltip, but with an overlay of itself, like shifted by 1px or 2px, and in bright blue. Only during the mailbox retrieval process.
Now the wonky thing: It might be that I've seen this only while I had trouble with another (tooltip-affecting) addon. Though I see no way how that could produce such an outcome… but who knows…
oh, gosh, ok, found it now. Will try it tomorrow. FYI: The link to all builds is : https://legacy.curseforge.com/wow/addons/syndicator/files/all
As Xruptor said, this is a limitation of the Blizzard APIs not supplying a good way to get pet information, so isn't fixable without some kind of compromise in functionality.
lazy scanning
OK, this is a good thing. I'll disable all the mail scanning prevention from my addon, and enable this one (and not using TSM mail ofc). Just give me a few hours to get some pet cages in my inbox (or I will force it)…
You'll need to update to the latest alpha build from https://legacy.curseforge.com/wow/addons/syndicator/files
Nope. Doesn't work, still the same. I even tried copying the substrings separately, like "'syn" and "c" and "lazy_mailbox_scanning"
That's what I get when scanning 16 pets in the mail, and opening them all took a few seconds.
That's from 34 (plus 4 not pets), so an estimated 4.47ms for 100 pets, the max the mailbox will show in separate mails.
However when opening mails:
That's with 34 pets in the mail after opening the 4 not-pets
That's when reopening the mailbox.
These numbers are so small that you must have the equivalent of 335 different addons scanning the mail when opening them (assuming the max 100 in the mailbox). Which suggests there is another addon that is overdoing the scanning that has been overlooked. Bearing in mind my computer is pretty fast.
I tried the 13-3-g790619a with /syn c lazy_mailbox_scanning true
vs. false
this morning with minor numbers of pet cages (20 or so), and, well, it felt a bit faster (all other tooltip additions from my list were toggled off). But the big slowdown comes from the sum of tooltip-adding addons, where TSM seems to be the biggest contributor. Synd alone is tolerable, but mail retrieval is still noticeably faster when toggled off.
So, if I recapitulate the thread correctly, the answer to my question is probably "it's a flaw on Blizz's end and there's not much we can do about it" (besides switching off tooltip additions at the mailbox/guildbank)
I got interrupted while writing my last post and haven't seen your "What I think is happening is that yet another addon is repeatedly scanning all items in the game": If this is true, then my guess is that this is TSM.
Found an optimisation for the guild bank scan that saves 1ms, so 5-6ms down to 4-5ms.
I did observe a 10-15ms scan time, which to me is too slow, hence the investigation for an optimisation. That kind of time is normal for when the item data isn't cached though.
I've removed the lazy mail scan option in version 15, so for the purposes of testing stick to before 15
What I think is happening is that yet another addon is repeatedly scanning all items in the game, causing the item data cache to repeatedly get wiped, causing the slowdown with all the other addons.
Can you test with just Syndicator on (no other add-ons whatsoever) and see if that affects performance, with and without the lazy scanning?
Also, what kind of numbers was Syndicator putting out in the chat for the scan times?
I copied this this morning (lazy true):
Console
caching took 0.44757300615311
summaries char 6.5923689603806
+ [Pet Cage] +
caching took 0.50854498147964
summaries char 6.54064899683
caching took 0.58462297916412
summaries char 6.2550190091133
+ [Pet Cage] +
caching took 0.52716702222824
summaries char 6.0465559959412
+ [Pet Cage] +
caching took 0.51359003782272
summaries char 5.9143400192261
+ [Pet Cage] +
caching took 0.55398499965668
summaries char 5.9852059483528
+ [Pet Cage] +
+ [Tranquil Mechanical Yeti] +
+ [Pet Cage] +
caching took 0.56951600313187
summaries char 5.7471039891243
+ [Pet Cage] +
caching took 0.58322596549988
summaries char 6.0576989650726
+ [Pet Cage] +
+ [Pet Cage] +
caching took 0.63027602434158
summaries char 6.0131820440292
+ [Pet Cage] +
+ [Pet Cage] +
caching took 0.67640495300293
summaries char 6.0649970173836
caching took 0.7168380022049
summaries char 5.822990000248
+ [Pet Cage] +
caching took 0.71235799789429
summaries char 6.3139590024948
+ [Pet Cage] +
caching took 0.66730397939682
summaries char 5.8704209923744
+ [Pet Cage] +
caching took 0.82224202156067
summaries char 5.8858100175858
+ [Pet Cage] +
10:39:13 Philip Luke says: No, sir. I don't believe so.
caching took 0.72923702001572
summaries char 5.9563050270081
+ [Pet Cage] +
+ [Pet Cage] +
caching took 0.73652499914169
summaries char 5.8229950070381
+ [Pet Cage] +
caching took 0.801265001297
summaries char 5.7819610238075
caching took 0.79223698377609
summaries char 5.8829529881477
+ [Pet Cage] +
+ [Pet Cage] +
caching took 1.3623609542847
+ [Pet Cage] +
caching took 0.61390501260757
+ [Accursed Keepsake] +
+ [Recipe: Flask of Supreme Power] +
caching took 0.60172098875046
+ [Draconium Leatherworker's Knife ] +
+ [Hexweave Bag] +
caching took 0.64447700977325
+ [Pattern: Red Mageweave Shoulders] +
+ [Cyclical Power Housing] +
caching took 0.67731100320816
+ [Burnished Inscription Bag] +
caching took 0.72203201055527
+ [Burnished Inscription Bag] +
+ [Findle's Loot-A-Rang] +
caching took 0.74595999717712
+ [Magnificent Hide Pack] +
+ [Magnificent Hide Pack] +
caching took 0.80862802267075
+ [Schematic: Lifelike Mechanical Toad] +
caching took 0.79671800136566
+ [Red Noggin Candle] +
+ [Scribe's Fastened Quill ] +
caching took 0.48216098546982
+ [Otherworldly Bag] +
+ [Otherworldly Bag] +
WA: Token Price: New token price received.
+ [Plans: Golden Scale Coif] +
caching took 0.51324301958084
+ [Reinforced Cobalt Chestpiece] +
+ [Tenacious Vine Staff of the Quickblade] +
caching took 0.5637349486351
+ [Ghost Iron Dragonling] +
+ [Schematic: World Enlarger] +
+ [Grimscale Sabatons of the Quickblade] +
caching took 0.61360001564026
+ [Pattern: Felcloth Pants] +
+ [Bone-Plated Bracers] +
caching took 0.62868499755859
caching took 0.64521098136902
+ [Bone-Plated Armor] +
+ [Pattern: Crimson Silk Robe] +
+ [Splinterspear Axe of the Aurora] +
caching took 0.69845402240753
+ [Formula: Enchant Cloak - Superior Defense] +
+ [Fleece Cloak of the Fireflash] +
caching took 0.73464494943619
+ [Talon Guard Legplates of the Quickblade] +
+ [Pattern: Lavender Mageweave Shirt] +
caching took 0.78143799304962
+ [Pattern: Imbued Silkweave Flourish] +
caching took 0.7982149720192
+ [Bone-Plated Boots] +
caching took 0.62732094526291
+ [Bone-Plated Belt] +
+ [Crude Umbrafen Blade of the Aurora] +
caching took 0.64767301082611
+ [Formula: Superior Wizard Oil] +
caching took 0.67505699396133
+ [Bone-Plated Leggings] +
caching took 0.69522303342819
+ [Pattern: Big Voodoo Cloak] +
+ [Bone-Plated Gloves] +
caching took 0.7283119559288
+ [Pattern: Azure Silk Gloves] +
+ [Bone-Plated Helm] +
caching took 0.76471197605133
mail finish 0.066231966018677
summaries char 5.7910780310631
Some add-on is opening the tooltip for every item (which is different to the pet scanning) which will be having a very noticeable performance impact
Can you test with just Syndicator on (no other add-ons whatsoever) and see if that affects performance, with and without the lazy scanning?
Yes, I can do thorough testing later this afternoon.
Using 25 pets and random items posted on the AH and then cancelled. For me with no lazy scanning it looks like this
Console
[11:21:52] mail finish 1.0857999920845
[11:21:52] You receive item: [Pet Cage]
[11:21:52] mail finish 1.0283000022173
[11:21:52] mail finish 1.0337999910116
[11:21:53] mail finish 1.0185000002384
[11:21:53] caching took 0.85029999911785
[11:21:53] You receive item: [Pet Cage]
[11:21:53] mail finish 0.99819999933243
[11:21:53] mail finish 1.1325999945402
[11:21:53] mail finish 1.0227000117302
[11:21:53] You receive item: [Templar Crown of the Quickblade]
[11:21:53] mail finish 1.0424000024796
[11:21:53] caching took 0.64450000226498
[11:21:53] caching took 1.0625999867916
[11:21:53] mail finish 1.0040999948978
[11:21:53] mail finish 1.0294000059366
[11:21:53] You receive item: [Pet Cage]
[11:21:53] mail finish 1.0279000103474
[11:21:53] mail finish 0.97269999980927
[11:21:53] mail finish 1.0020000040531
[11:21:53] You receive item: [Pet Cage]
[11:21:53] mail finish 1.0664999932051
[11:21:53] mail finish 1.0857999920845
[11:21:53] mail finish 0.9822999984026
[11:21:53] caching took 0.67069999873638
[11:21:53] You receive item: [Pet Cage]
[11:21:53] mail finish 0.86329999566078
[11:21:54] mail finish 0.88810001313686
[11:21:54] mail finish 0.87029999494553
[11:21:54] You receive item: [Pet Cage]
[11:21:54] mail finish 0.84850001335144
[11:21:54] mail finish 0.8069000095129
[11:21:54] caching took 0.62600000202656
[11:21:54] mail finish 0.84319999814034
[11:21:54] You receive item: [Pet Cage]
[11:21:54] caching took 0.78709998726845
[11:21:54] mail finish 0.77690000832081
[11:21:54] mail finish 0.79020000994205
[11:21:54] mail finish 0.78200000524521
[11:21:54] You receive item: [Pet Cage]
[11:21:54] mail finish 0.77829998731613
[11:21:54] mail finish 0.78329999744892
[11:21:54] mail finish 0.78999999165535
[11:21:54] You receive item: [Pet Cage]
[11:21:54] mail finish 0.73929999768734
[11:21:54] mail finish 0.70489999651909
[11:21:54] mail finish 0.75079999864101
[11:21:54] You receive item: [Pet Cage]
[11:21:54] mail finish 0.68860000371933
[11:21:54] mail finish 0.67929999530315
[11:21:54] mail finish 0.69590000808239
[11:21:55] caching took 0.69340001046658
[11:21:55] You receive item: [Icepine Bindings of the Feverflare]
[11:21:55] mail finish 0.66079999506474
[11:21:55] mail finish 0.70809999108315
[11:21:55] mail finish 0.71520000696182
[11:21:55] You receive item: [Pet Cage]
[11:21:55] mail finish 0.67720000445843
[11:21:55] mail finish 0.67839999496937
[11:21:55] mail finish 0.68160000443459
[11:21:55] caching took 1.6988999992609
[11:21:55] You receive item: [Pet Cage]
[11:21:55] mail finish 0.68940000236034
[11:21:55] mail finish 0.62870000302792
[11:21:55] mail finish 0.61950001120567
[11:21:55] caching took 0.67310000956059
[11:21:55] You receive item: [Hagfeather Robe of the Harmonious]
[11:21:55] mail finish 0.60029999911785
[11:21:55] mail finish 0.59729999303818
[11:21:55] mail finish 0.59450000524521
[11:21:55] You receive item: [Pet Cage]
[11:21:55] mail finish 0.56909999251366
[11:21:55] mail finish 0.57789999246597
[11:21:55] You receive item: [Pet Cage]
[11:21:55] mail finish 0.57189999520779
[11:21:55] caching took 0.77510000765324
[11:21:55] mail finish 0.49400000274181
[11:21:55] mail finish 0.55480000376701
[11:21:55] You receive item: [Pet Cage]
[11:21:55] mail finish 0.46609999239445
[11:21:56] mail finish 0.47519999742508
[11:21:56] You receive item: [Pet Cage]
[11:21:56] mail finish 0.45049999654293
[11:21:56] mail finish 0.4261000007391
[11:21:56] mail finish 0.48829999566078
[11:21:56] caching took 0.7575000077486
[11:21:56] You receive item: [Pet Cage]
[11:21:56] mail finish 0.39660000801086
[11:21:56] mail finish 0.40569999814034
[11:21:56] mail finish 0.4619999974966
[11:21:56] You receive item: [Pet Cage]
[11:21:56] mail finish 0.3733000010252
[11:21:56] caching took 0.68230000138283
[11:21:56] mail finish 0.36079999804497
[11:21:56] mail finish 0.40880000591278
[11:21:56] caching took 0.83270001411438
[11:21:56] You receive item: [Pet Cage]
[11:21:56] mail finish 0.33730000257492
[11:21:56] mail finish 0.33220000565052
[11:21:56] mail finish 0.44319999217987
[11:21:56] You receive item: [Pet Cage]
[11:21:56] mail finish 0.30810000002384
[11:21:56] mail finish 0.30170001089573
[11:21:56] mail finish 0.32840000092983
[11:21:56] You receive item: [Pet Cage]
[11:21:56] mail finish 0.29340000450611
[11:21:57] mail finish 0.28119999170303
[11:21:57] caching took 0.79190000891685
[11:21:57] You receive item: [Pet Cage]
[11:21:57] mail finish 0.25550000369549
[11:21:57] mail finish 0.22849999368191
[11:21:57] mail finish 0.24549999833107
[11:21:57] caching took 0.84010000526905
[11:21:57] You receive item: [Aegis of Stormwind]
[11:21:57] mail finish 0.24140000343323
[11:21:57] mail finish 0.24570000171661
[11:21:57] caching took 0.88919998705387
[11:21:57] mail finish 0.22709999978542
[11:21:57] You receive item: [Pet Cage]
[11:21:57] mail finish 0.17809998989105
[11:21:57] caching took 0.8788999915123
[11:21:57] mail finish 0.17320001125336
[11:21:57] mail finish 0.17569999396801
[11:21:57] You receive item: [Pet Cage]
[11:21:57] mail finish 0.11270000040531
[11:21:57] mail finish 0.12060000002384
[11:21:57] mail finish 0.11349999904633
[11:21:57] caching took 0.85870000720024
Each mail finish
takes place on a different frame, as does the caching
The giveaway that your setup is having the tooltip open every time is the summaries char 6.2550190091133
line, each time that appears it means the bags/mail have updated and a tooltip has been opened for at least one item.
With all addons unloaded, except my addon manager (SimpleAddonManager) and Syndicator, mail retrieval is blazingly fast (exactly 50 auction mails with pet cages, nothing else).
The problem is that with lazy false
I didn't get a "summaries char" at the end:
But there wasn't any felt difference. If any, then lazy false
[sic] was rather the faster one.
Will try to locate the problematic addon later. (But I'm pretty sure that I've done this already a year ago, with the outcome that the sum of tooltip-modifying addons makes it; but maybe (hopefully!) I have overlooked something…)
Here the complete benchmarks (50 pet cages, seconds):
Normal and all tooltip additions enabled: 61.57
Normal and all tooltip additions toggled off: 8.64
Stash line 483 disabled and all tooltip additions enabled: 6.89
Stash line 483 disabled and all tooltip additions toggled off: 8.34 (weird, but probably within the usual deviations)
Stash completely unloaded and all tooltip additions enabled: 10.57
Stash completely unloaded and all tooltip additions toggled off: 8.10
So, considering deviations by other factors, the speeds of all (except the first ofc) are virtually identical. This means I can either unload/fix Stash and do no longer need my automatic tooltip toggles, or continue with Stash and my tooltip toggles; it's the same ;)
But you were absolutely right when you said that probably one addon is "causing the slowdown with all the other addons".
Still to verify:
- Guildbank slowdown
- The mail retrieval slowdown with non-pet items (but I tend to think that my observations of this slowdown were spoiled by the occasional pet cages amongst the non-pet items in the mailbox, e.g. 1 pet per 20 other items could already produce a noticeable slowdown)
It seems I found it: Stash
/Applications/World of Warcraft/retail/Interface/AddOns/Stash/data/tracking.lua, the function stash.tracking:MAIL_INBOX_UPDATE()
at line 476:
If I force the conditional at line 483 to false (e.g. if itemID==C.PET_CAGE_ITEMID
--> if itemID==0
) then everything is speedy :)
Just doing some benchmarks if I still need my tooltip toggling stuff…
I've run into the stupid AH scan throttle, but the benchmarks so far:
Seconds needed for retrieving 50 pet cage AH mails:
Normal and all tooltip additions enabled: 61.57
Normal and all tooltip additions toggled off: 8.64
Stash line 483 disabled and all tooltip additions enabled: 6.89
Stash line 483 disabled and all tooltip additions toggled off: ???
Stash completely unloaded and all tooltip additions enabled: ???
Stash completely unloaded and all tooltip additions toggled off: ???
Yeah, that's pretty conclusive.
I'd expect the guild bank issue to be the same, Stash, but with GameTooltip:SetGuildBankItem
Yes, the guild bank slowdown is also caused by Stash (in the presence of other tooltip modifying addons).
Function UpdateGuildBankSlot
line 351 in tracking.lua, completely analogous to the mailbox function, see above.
I'm glad you've finally solved the slowdown. And its nice to know that none of my addons were the root cause.
Last test is TSM now ;)
Just tested the TSM Mail UI, it's equally speedy (if the Stash function is disabled). And even with TSM tooltips enabled.
Shame on me, by the way, because my first suspect was TSM, and it was completely innocent here. But usually it is the culprit 😎
I'm glad you've finally solved the slowdown
Yes, thanks to your insight and helpfulness! And thanks to Syndicator's debug messages ("summaries" with every item)!
I can now imagine why I failed to isolate Stash as the culprit a year ago:
Most likely, I removed one tooltip-modifying addon after another, starting with TSM, then BagSync, then BPBID, …, and Stash as the last one (since it is the "lightest"). If you do this, you'll notice a gradual decrease of the slowdown as each addon is removed. This got me fixated on the idea that it was the sum of all the addons that caused the slowdown.
If I had removed Stash as the first addon, I would have found the cause right away 😉 .