7 Replies Latest reply on Jul 23, 2010 10:23 AM by Flex harUI

    Load time issues FLEX swf vs. FLASH swf

    miragevideo

      Hello,

       

      We are building FLex and Flash apps running on Flash 10.1.  In our situation, the load time for a 1080x768 swf is slower when building in Flex than in flash.  We have tried useing the preinitialize event to set at least a loading message, but the delay happens before the preinitialize event.  It seems to take 1-2 seconds to load the FLex API perhaps?  The only visula we can see is the background color of the stage.  Even with a simple nearly empty main canvas, the load is slow enough to be noticable.  More importanly it is faster when using a FLASH swf ( or pure AS3), so it must be related to the FLex aspect.  Is there anyway to cache the common classes or maybe exclude some that are not used?

       

      Thanks,

       

      Jeff Schuenke

        • 1. Re: Load time issues FLEX swf vs. FLASH swf
          Flex harUI Adobe Employee

          Are you using the framework RSLs?  Even then, it will be hard to beat a 3Kb

          Flash SWF.  But one you make the SWF complex enough, you'll probably find

          that it was faster to develop and maintain the app in Flex than in Flash and

          the trade-off will be worth it.

          1 person found this helpful
          • 2. Re: Load time issues FLEX swf vs. FLASH swf
            miragevideo Level 1

            Can you point me to a place to understand what is nessecary to use the RSL's?  That might help.

             

            I understand about Flex being easier to work within and that is why we use it.  However, our platform is unusual in that it is a private network of legacy devices, some of which are slow.  THe load delay is seen as a black screen and not desirable.  I really want to use FLex but at least find a way of putting a loader screen up early in the process.

             

            Jeff

            • 3. Re: Load time issues FLEX swf vs. FLASH swf
              Flex harUI Adobe Employee

              To use the RSLs, see the "framework linkage" option in the Project

              Properties in Flash Builder.  If you are using ANT scripts, there are

              compiler options that have to be set up.

               

              A standard Flex app will show a preloader bar within a second or two unless

              the machine is really crippled.  However there is a bug where if you use #

              on the URL the entire SWF must be downloaded before showing anything.

               

              Some folks will use a small preloader SWF that then loads the main app.

              • 4. Re: Load time issues FLEX swf vs. FLASH swf
                miragevideo Level 1

                It looks like this might be helpful, but we are using Flex Builder 3 and do not have this option. Is it possible to

                load a subset of the application framework in Flex 3 and would that speed up the preinitialization step?

                • 5. Re: Load time issues FLEX swf vs. FLASH swf
                  Flex harUI Adobe Employee

                  It is in there in FlexBuilder 3.  Or you can set up MXML options to do it.

                  Search the doc or maybe someone who still has FB3 can help.

                  • 6. Re: Load time issues FLEX swf vs. FLASH swf
                    miragevideo Level 1

                    Hi Again,

                     

                    I really apprecite your help on this.  I have tried using RSL and have a few questions.  After changing from embedding the framework libraries, two files show up in the build folder:

                    framework_3.2.0.3958.swf and framework_3.2.0.3958.swz with sizes 556KB and 560 KB repsectively.

                     

                    The orginal swf I built with embedded framework was 3.5MB and with the RSL's it is 3.2MB.

                     

                    So

                    With RSL's - 4.2MB , with embedding 3.5MB

                     

                    Why is the total with RSL larger?

                     

                    In our case, file size is not a huge issue since all  swfs are preloaded and run from the hard drive. But since the goal is to reduce startup time, it seems like this is a losing proposition. The flash plaer instance is reloaded each time a swf is launched, so there is no benefit from having cached libraries as far as I can see.  Do you agree?

                     

                    Can you describe what happens before the Application preinitialize event fires?

                     

                    Thanks,

                     

                    Jeff

                    • 7. Re: Load time issues FLEX swf vs. FLASH swf
                      Flex harUI Adobe Employee

                      The main point of RSLs is to gamble on improving download time of the SWF at

                      networks speeds.  The gamble is that someone has already loaded the RSL so

                      it gets picked up off the browser cache at hard-drive speeds.  If it isn't

                      true, you pay a higher penalty because you are loading an RSL that has code

                      in it you aren't using.  That's why the total payload is more.  For the

                      record, only the SWF or the SWZ gets loaded, not both.  But even then the

                      total payload would be more.

                       

                      At home, my DSL/WIFI network gets me about 70KB/sec, so saving 300K would be

                      a noticable savings.  If you are loading off a hard disk, 300K probably

                      won't be felt.

                       

                      The startup sequence of a SWF over a network (http or https):

                      -start streaming in SWF bytes

                      -when the first frame is downloaded (generally about 80-100K) see how many

                      bytes are left to download and if there is a lot, show a progress bar

                      -load any RSLs and wait for their download and initialization

                      -update the progress bar until the rest of the SWF downloads

                      -after the SWF downloads:

                          -initialize styles

                          -initialize resources

                          -prepare embedded fonts

                          -setup managers for popups, tooltips, dragging if needed

                          -instantiate Application

                              -verify and initialize all classes needed by Application

                              -dispatch Application preinitialize

                              -instantiate the initial set of children for the Application

                              -dispatch Application initialize

                          -update progress bar to show "initializing"

                          -start validation of Application and its children

                          -continue to do so until all children are measured and layed out

                          -dispatch Application creationComplete

                          -add Application to stage (actually systemManager)

                          -dispatch Application applicationComplete

                       

                      The startup sequence of a SWF on a hard drive is different.  The entire SWF

                      must be sucked into memory, unzipped (SWFs are zipped by default) and only

                      then do we get to the steps where we show a progress bar, check for RSLs,

                      etc.

                       

                      At 3MB, there might be a noticeable hit.  You can find a big image file and

                      zip it to see if it comes out to about 3MB.  Then use the file system to

                      copy it and see how long that takes and then unzip it and see how long that

                      takes.

                       

                      Another place that causes delay is in the validation of children.  If the

                      children's size are not stable right away (because data is coming in that

                      affects their size) then several validation passes might be taking place.

                       

                      A common error is to create every child in the app, even ones that aren't

                      seen or needed right away.  That adds work at validation time and delays the

                      startup process.

                       

                      I would recommend that you use the performance profiler in Flex Builder to

                      see where all the time is being spent.

                       

                      However, 3MB is a big SWF. Use of modules to chop off stuff not needed until

                      "later" is recommended and will probably be the answer.