Get an Epic Experience with Premium

Speedy Load

Miscellaneous Login to Add Favorites
  • 10 Likes
  • World of Warcraft
  • 289 Monthly Downloads
  • Supports: 5.4.0
  • 29,694 Total Downloads
  • Updated 10/20/2013
  • Created 08/24/2011
  • 93 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: GNU General Public License version 3 (GPLv3)
  • Newest File: 2.2.0
or
Support development! **
Donate

About Speedy Load

Info

Speedy Load disables certain events during loading screens to drastically improve loading times.

On my own computer, running a state-of-the-art Intel Core i7 2600k processor with 50 addons loaded, Speedy Load has decreased the time taken for my hunter to zone into the Molten Front daily quest area from 5 seconds to 3.6 seconds. That is a 28% increase in speed and a savings of 1.4 seconds! Your results will vary based on class and number of addons, but if you have an older computer, you will almost certainly experience a significant difference.

Speedy Load will decrease the time spent in loading screens for:

  • Instances and Raids
  • Boats and Zeppelins
  • Mage portals
  • Cataclysm zone portals
  • Summons
  • ...And nearly every other loading screen you will ever encounter in-game!

How it Works

To understand how Speedy Load works and how it is affecting your loading screens, you must first understand the basic workings of the AddOn API. Most AddOns, including the default Blizzard UI, are coded so that certain pieces of code are only executed when certain events occur. In order to see these events, a AddOn must have a frame register an event. Once an event has been registered, an AddOn will execute certain code when an event is fired. There are currently 679 different events that can be registered for, and they can generally be divided into two types: those that include data, and those that do not.

Events that include data with them when they are fired cannot be safely be unregistered because this would cause data to be missed. An example of this is CHAT_MSG_GUILD - the event that fires when somebody says something in your guild's chat. If this event were to be unregistered from every frame during loading screens, you would not see what was said in your guild while you were in the loading screen. It is for this reason that Speedy Load will not unregister any events that may be carrying important data

Events that do not include data can be further broken down into two sub-types: events that trigger something, and events that notify a change. An example of the first sub-type is PVPQUEUE_ANYWHERE_SHOW. This event tells that battleground/arena/war games interface to show, and should not (and will not, by Speedy Load) be unregistered. SPELLS_CHANGED is an example of the second sub-type - it simply notifies the UI that your spells changed, and that it should re-check to see what abilities you have learned and what is available to you.

These types of events (i.e. events without data that only notify the UI of an update) can generally be unregistered during a loading screen, because they often times will fire excessively (more than once) during the loading process without any real purpose beyond the last firing. What Speedy Load does is unregister a number of these non-critical events when you enter a loading screen. When the loading screen completes, these events are re-registered to every frame of every AddOn that had registered them before the loading screen, and then Speedy Load will "fake" the firing of these events only once (and only if they actually occurred during the loading screen) in order to ensure that everything that depends on these events will continue functioning properly.

------------------------------------------------------------------------
r26 | cybeloras | 2013-10-21 02:33:06 +0000 (Mon, 21 Oct 2013) | 1 line
Changed paths:
   A /tags/2.2.0 (from /trunk:25)

Tagging as 2.2.0
------------------------------------------------------------------------
r25 | cybeloras | 2013-10-21 02:30:39 +0000 (Mon, 21 Oct 2013) | 1 line
Changed paths:
   M /trunk/SpeedyLoad.toc

.toc version bump
------------------------------------------------------------------------
r24 | cybeloras | 2013-10-21 02:30:02 +0000 (Mon, 21 Oct 2013) | 1 line
Changed paths:
   M /trunk/SpeedyLoad.lua

SpeedyLoad now only operates on non-secure (non-Blizzard) frames. This should resolve all past and future issues with taint.
------------------------------------------------------------------------

Comments

First Previous Page 1 of 2 Next Last
  • #32

    Without addon load time - 26 seconds

    WITH addon load time - 26 seconds

     

    So yea I dunno what this is supposed to do -_-

  • #33

    As the description states, SpeedyLoad can only speed up the load time AFTER  your first loading screen. The loading screen you get as you first zone in to the world after selecting a character can't be affected. If you are getting 26 second loading screens as non-login loading screens, then your speed issue is most likely due to a slow/fragmented harddrive.

    SpedyLoad's speed increases come from decreased usage of the CPU duing loading screens. If your hard drive is what is causing the longest delays, then only an upgrade (or at least a defragmentation) is going to speed up your loading screens.

  • #34

    Ah I see now so Speedy Load would help the second load screens and beyond and yea I really need to get an SSD would be amazing for load times but saving up right now :) Thank you for your reply ! 

  • #31

    I just wanted to thank you for this addon and your hard work.

    For me it is a must-have. :)

     

  • #28

    I want to note that as of patch 5.2 and patch 5.3, I have been unable to use Speedy Load because of UI tainting.  Most taints reflect a hardware event, and while I understand that Speedy Load doesn't touch any of them, the taints ONLY occour with Speedy Load loaded, and have never occoured (for me at least), without it.

    2.1.1 has provided no alleviation for UI taints.

    I just want to remind you that any AddOn has the capacity to taint any portion of the Blizzard UI, regardless of what you touch.

    Last edited by Clamsoda on 6/10/2013 9:17:55 AM
  • #30

    I just downloaded this addon.  I did the "/console taintlog 2" command then restarted warcraft.  At least on startup/reload this program is taint free. 

    Once the interface panel is opened after hitting ESCAPE taint runs rampant from any program that uses Blizzard's menuing system because it taints UIDropDown.  I highly recommend after accessing the interface button for anything even just cancelling out that the user reloads the UI.  The next program that executes the tainted code gets blamed even if the original taint came from somewhere else.

    Keep up the good work!

     

  • #29

    Unfortunately for us, Blizzard's taint system provides error messages that are (95% of the time) completely useless in figuring out what the problem is. Ghostcrawler mentioned that an update may be coming to the system to provide more useful feedback in a tweet he made a few months back, but since that has not yet happened, there isn't much that I can do.

    I just want to remind you that any AddOn has the capacity to taint any portion of the Blizzard UI, regardless of what you touch.

    I am aware of this, and it is for this reason that these issues can't be fixed without a major improvement on Blizzard's side of things. I get people showing me errors all the time that blame TellMeWhen (one of my other addons) for trying to show and hide action bars (verbatim: [ADDON_ACTION_BLOCKED] AddOn "TellMeWhen" tried to call the protected function "MultiBarLeft:Hide()" - http://www.curse.com/addons/wow/tellmewhen?comment=3894) I can't act on these errors because I haven't got the slighest clue why there are happening. TellMeWhen does not even come close to modifying anything having anything to do with action bars and the stack traces from these errors originate in FrameXML code, so even if it really is TellMeWhen that is causing these, I can't begin to act on them because I wouldn't know where to start. I personally don't get these errors that blame TellMeWhen - the ones I get blame my map addon (Mapster) instead for trying to hide the action bars that I don't even use because I use an action bar replacement addon (Dominos).

    The whole system is a mess right now, and I'm surprised that the whole fiasco with glyph/talent changes being blocked hasn't seemed to escalate the urgency of the issue for Blizzard. They continue to go for their standard response of "AddOns shouldn't be able to automate glyph and/or talent switching" which overlooks what the problem is completely. I don't know if they are blissfully ignorant of what the real problem is or if they are aware of it but don't want to act on it because it is easier to tell people to just disable whatever AddOn gets randomly blamed. I would surely hope that they are aware of it, though - all it would take is one semi-competent UI dev on the team to run into one of these glyph/talent change blocks while playing to realize something is not right.

    I digress into TellMeWhen, but the problem is the same for SpeedyLoad - I simply do not know what the issue might be because the system that is throwing the errors does not throw any meaningful errors that help in figuring out the problem. Sometimes you will get meaningful errors when an AddOn is directly doing something it should not be doing - try to call CastSpellByName("arcane shot"), for example, and you will get an error that tell you exactly what the problem is - but these circumstances only happen when the code written directly does something bad (which is easily remedied).

    From my experiences, the taint errors that blame SpeedyLoad (and TellMeWhen and all other addons that I use and/or have written) are extremely intermittent and can happen in what seems to be totally random intervals. I have not yet discovered any circumstance that can reliably reproduce these taint messages time and time again. Some days I can play for hours and hours and not see a single error. Other days I will join a battleground and get one as soon as I enter combat with the first enemy I see.

    TL;DR There is nothing that I can do while Blizzard's taint system sucks as badly as it does right now. Maybe I will be able to figure something out (or maybe I won't need to anymore) when they come through with the update that they have hinted about in the past.

    Last edited by Cybeloras on 7/1/2013 10:16:27 PM
  • #27

    Thank you so much for the update! :D

  • #25

    Date: 2013-05-22 15:54:49
    ID: 2
    Error occured in: AddOn: SpeedyLoad
    Count: 1
    Message: Error: AddOn SpeedyLoad attempted to call a forbidden function (CastGlyph()) from a tainted execution path.
    Debug:
       [C]: CastGlyph()
       ...terface\AddOns\Blizzard_GlyphUI\Blizzard_GlyphUI.lua:526: GlyphFrameSpell_OnClick()
       [string "*:OnClick"]:1:
          [string "*:OnClick"]:1
    Locals:
    None



  • #26

    This error originates from a hardware event (OnClick), so there is no way that SpeedyLoad could be causing this.

    See: http://www.curse.com/addons/wow/speedy-load?comment=20

  • #23

    48x [ADDON_ACTION_BLOCKED] AddOn "SpeedyLoad" tried to call the protected function "ArenaPrepFrames:SetPoint()".
    !BugGrabber-r191-release\BugGrabber.lua:587: in function <!BugGrabber\BugGrabber.lua:587>
    <in C code>
    FrameXML\UIParent.lua:2172: in function "UIParentManageFramePositions"
    FrameXML\UIParent.lua:1525: in function <FrameXML\UIParent.lua:1512>
    <in C code>
    FrameXML\UIParent.lua:2205: in function "UIParent_ManageFramePositions"
    <string>:"*:OnShow":1: in function <string>:"*:OnShow":1
    <in C code>
    FrameXML\WorldStateFrame.lua:149: in function "WorldStateAlwaysUpFrame_Update"
    FrameXML\WorldStateFrame.lua:120: in function <FrameXML\WorldStateFrame.lua:106>

    Locals:
    nil

     

     

     

    48x [ADDON_ACTION_BLOCKED] AddOn "SpeedyLoad" tried to call the protected function "ArenaPrepFrames:ClearAllPoints()".
    !BugGrabber-r191-release\BugGrabber.lua:587: in function <!BugGrabber\BugGrabber.lua:587>
    <in C code>
    FrameXML\UIParent.lua:2171: in function "UIParentManageFramePositions"
    FrameXML\UIParent.lua:1525: in function <FrameXML\UIParent.lua:1512>
    <in C code>
    FrameXML\UIParent.lua:2205: in function "UIParent_ManageFramePositions"
    <string>:"*:OnShow":1: in function <string>:"*:OnShow":1
    <in C code>
    FrameXML\WorldStateFrame.lua:149: in function "WorldStateAlwaysUpFrame_Update"
    FrameXML\WorldStateFrame.lua:120: in function <FrameXML\WorldStateFrame.lua:106>

    Locals:
    nil

     

     

    48x [ADDON_ACTION_BLOCKED] AddOn "SpeedyLoad" tried to call the protected function "ArenaEnemyFrames:SetPoint()".
    !BugGrabber-r191-release\BugGrabber.lua:587: in function <!BugGrabber\BugGrabber.lua:587>
    <in C code>
    FrameXML\UIParent.lua:2167: in function "UIParentManageFramePositions"
    FrameXML\UIParent.lua:1525: in function <FrameXML\UIParent.lua:1512>
    <in C code>
    FrameXML\UIParent.lua:2205: in function "UIParent_ManageFramePositions"
    <string>:"*:OnShow":1: in function <string>:"*:OnShow":1
    <in C code>
    FrameXML\WorldStateFrame.lua:149: in function "WorldStateAlwaysUpFrame_Update"
    FrameXML\WorldStateFrame.lua:120: in function <FrameXML\WorldStateFrame.lua:106>

    Locals:
    nil

     

     

    48x [ADDON_ACTION_BLOCKED] AddOn "SpeedyLoad" tried to call the protected function "ArenaEnemyFrames:ClearAllPoints()".
    !BugGrabber-r191-release\BugGrabber.lua:587: in function <!BugGrabber\BugGrabber.lua:587>
    <in C code>
    FrameXML\UIParent.lua:2166: in function "UIParentManageFramePositions"
    FrameXML\UIParent.lua:1525: in function <FrameXML\UIParent.lua:1512>
    <in C code>
    FrameXML\UIParent.lua:2205: in function "UIParent_ManageFramePositions"
    <string>:"*:OnShow":1: in function <string>:"*:OnShow":1
    <in C code>
    FrameXML\WorldStateFrame.lua:149: in function "WorldStateAlwaysUpFrame_Update"
    FrameXML\WorldStateFrame.lua:120: in function <FrameXML\WorldStateFrame.lua:106>

    Locals:
    nil

     

     

     

  • #24

    Try r21

  • #20
    Taint Log

    I noticed this in my taint log, and figured I'd post it considering Speedy Load is hight on my AddOn index, I assumed it wasn't Blizzard blaming it for no reason.

    12/11 03:47:56.083 An action was blocked because of taint from SpeedyLoad - CastGlyph()
    12/11 03:47:56.083 Interface\AddOns\Blizzard_GlyphUI\Blizzard_GlyphUI.lua:525 GlyphFrameSpell_OnClick()
    12/11 03:47:56.083 GlyphFrameScrollFrameButton4:OnClick()

  • #21

    This error originates from a hardware event (OnClick), so there is no way that SpeedyLoad could be causing this.

  • #22

    Ahh, very true.  I should think for a minute before I post next time >.<.  Thanks for the quick reply and explanation.

  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

WildStar Add-on Contest!

Enter Now!