MAX 2005 coverage: Optimizing Flex apps for performance and scalability

by kai on 17/10/2005

This session seems to be very interesting. David showed some performance tests with Flex 1.5 and FP 7 vs. Flex 2.0 alpha and FP 8.5 and the speed is dramatically increased.

Some more hints:

* Object initialization
- deferred instantiation
- think about the use of objects and when to create an object
- use mx:Repeater carefully (do you really need all the objects created inside of a repeater - better might be a custom cellRenderer...)

* Measurement/Layout
- two phase algorithm (measurement phase from buttom up, layout phase form top down) - algorithm is O(n) - that means: look after the number of containers you have
- Reducing container nesting: HBox/Vbox instead of Grid, avoid nesting VBox inside Panel or Application, the root of an MXML component doesn't need to be a Container, use Canvas with constraints
- Bad: Container with single child

* Optimizing rendering
- great way to gain performance and to learn about redraw regions: "show redraw region" option in the debug player
- cacheAsBitmap option to avoid redrawing, example: move effects. Drawback: object change is more expensive
- decrease size of redraw regions
- use Resize.hideChildren for resizing effects

* Memory usage
- use newer player, FP 8 half as much memory as FP 7, FP 8.5 uses a bit more due to the new JIT compiler
- discard unused UI (myViewStack.removeChild())
- clear reference to unused data (...=null or myWebService.name.clearResult())
- break app into multiple swfs

* General
- implement your own paging for huge amounts of data
- in Flex 2.0: new data services architecture
- changing styles at runtime is bloody expensive !!!

← PreviousNext →MAX 2005 coverage: The Flash Player Runtime Security Model