« Screenshots of Brightcove's New Flex Applications | Main | Brightcove 3 Now Available »

How Do You Speed Up Flex Builder?

I've been spending some time at Brightcove trying to figure out ways to speed up Flex Builder for some of the larger applications we're developing here. I have a few things I'm working on myself, but I wanted to hear what others have done to improve the compile times in Flex Builder.

Here are some of things we do:

  • Build every application in one project using multiple source paths (instead of using extra library projects)
  • Build parts of the applications as SWCs (instead of referencing their source paths)
  • Close extra projects
  • Use a system font instead of embedding fonts
  • Run "eclipse -clean" occasionally
  • Turn off "Copy non-embedded files to source folder"
  • Turn off "Build Automatically"

Things we haven't tried or just trying now and which may be helpful:

  • Build a lot of the application as SWCs or anything as an RSL
  • The Hellfire compiler
  • Use the Flex 4 SDK (or just the compiler portion) with Flex Builder
  • Merge some of the many Flex 4 compiler performance changes into a Flex 3 SDK, and using this in Flex Builder

I should explain the last two items a little bit more. I've been watching the Flex 4 changes related to compiler performance with a lot of interest. There's an incredible amount of work going on there, and we can all expect to see some major improvements.

Do you have any other suggestions, unique hacks, custom workarounds? What do you think of the things we haven't tried? I'd love to hear everything, even if it seems specific to your situation.

Update: See A Faster Flex 3 SDK for another option for speeding up Flex Builder.

Comments (12)

I eliminated all my Flex Builder performance problems by upgrading to a Mac Pro. The last large Flex project I was working on was taking 60 seconds plus to compile on my Windows laptop. After hearing a rumor that the compiling was faster on OS X, I then installed Flex Builder on my lower-powered Mac Mini, and that compile time went down to 30-40 seconds. Now my compile times are, in general, fast enough that I can switch to my browser and reload the app as if it were a ColdFusion app.

Ive really not had any issues with performance using the FB plugin on Vista 64bit. I keep large projects in their own workspace, other than that I do not really do anything special.

If your project embeds more than a handful of assets this solution will save you a lot of time. http://www.rogue-development.com/blog2/2007/11/slow-flex-builder-compile-and-refresh-solution-modules/

Shannon and TJ, thanks for the info, although I doubt I'm going to get anyone to change their OS for this. Ben, that's something I'm definitely going to pass on. I'm really surprised to see that much of an improvement for embeds.

Your list matches what I'm discovered works best for us. One of the primary drawbacks to this approach is the lack of SVN support for files pulled in via source paths, but given the performance improvements I'm will to do my commits outside of Eclipse. I find compiling to SWCs is great if those portions of your system don't change frequently. If you are working on a core library that will become a SWC and its associated test code or applications, that development cycle is still best with source paths. I've not been following the Flex 4 changes that much but if you look into that more I'd love to hear what you find out.

Hi, ther's one tip that really tuned up (thanks god) my Flex Builder compilation, just put:

Project->Properties->Flex Compiler->Aditional Compiler Arguments

-incremental=true

That only updates and compile files and with changes and does not compile all the stuff again. Great results on medium/big projects. For the fisrt time it takes more time to compile (due to cache file generation), but the next compiles are really fast.

-keep=true or -keep-generated-actionscript=true can be other good tip, but only for check generated action script files (created under "generated" folder, good for debugging and code-check) but this doea not tune up the compiling time.

On small projects, this option maybe cannot improve flex builder, but on big projects the differences are many!

Hope it helps!

Best regards from Portugal, and sorry for my bad English :P

Daniel, I know that you have all tried out a lot of things at Allurent, so it's good to hear you have a similar list. I'm going to have a post with some more information on the Flex 4 performance changes in the next week or two.

Mario, I thought your English was just fine, and thanks for commenting. :) I have though tried incremental=true and never seen an improvement. Having a good idea of how the compiler works, I'm surprised to hear this helps you out.

ryan:

hey shannon, buying a new computer is not a solution...

you probably would have had the same performance increase if you had bought any new computer instead of a mac...

so what's with the [insert apple fanboy comment here] attitude?

Kieran:

Hi everybody!

My flex builder crashed due to embedded fonts. Never embed fonts :-)

Tangent:

I have used both Mac and PC for Flex Builder project, and I don't see a noticible difference, and I highly doubt so given they are both on x86 platforms.

What I would note would be the burden of anti-virus software, spyware and crapware is heavier on PC, therefore the system is wasting more CPU cycles on things unrelated to productivity. I have been a non-believer of anti-virus software and my system has been light and mean in many cases. Therefore, my PC can rival any equivalent Mac.

Using VM to surf is one way to keep spyware and crap out Windows, and while keeping host OS running lean and mean.

I am curious to see how Flex Builder / complier behave in different Java runtime ... is 1.6 any faster than 1.5?

dave.black:

To the point of embedded fonts - Fade effect requires embedded fonts, which slows build times and increases size of application SWF.

Fonts can be embedded in compiled CSS file and loaded at runtime to improve build times.

Embed font in css:
@font-face {
src: local("Arial");
fontFamily: Arial;
advancedAntiAliasing: true;
}

Right click on css and make sure check next to Compile CSS to SWF

Load at runtime in CreationComplete event:
StyleManager.loadStyleDeclarations('css/Fonts.swf',true);

Overall build performance improved with little impact on runtime (in my limited tests)

mateus:

If you have embeded fonts in SWC files, try removing antiAtliasType, it works here:

/* tf.antiAliasType = AntiAliasType.ADVANCED; */