Actionscript 3 performance optimering

En af de mest hardcore Flashkodere Joa Ebart har lavet et lille dokument med alle de tips og tricks til at optimere performance i ActionScript, som han selv er stødt på, og der er absolut et par guldkorn imellem.

De to som gør den allerstørste forskel er:

Genbrug objekter
Langsom:
for (;i<n;i++)
p = new Point(i, i);

Hurtig:
for (;i<n;i++)
{
p.x = i;
p.y = i;
}

Her er det cirka 40 gange hurtigere at genbruge objektet.

Undgå såvidt muligt try and catch
Langsom:
var o: Sprite;
for (;i<n;i++)
{
try
{
o.blendMode = BlendMode.ADD;
}
catch ( error: Error ) {}
}

Hurtig:
var o: Sprite;
for (;i<n;i++)
if ( o != null )
o.blendMode = BlendMode.ADD;

Her er det cirka 1000 gange hurtigere at teste på null.

Disse to og mange flere tips finder du i dette dokument:
ActionScript 3 optimization techniques by Joe Ebert

Og hvis du er i humør til lidt nørdgloser og teknisk snak, så vil jeg anbefale dig at kigge på hans egen blogpost om emnet, hvor særligt kommentarer bliver særdeles nørdede:
ActionScript 3 optimization techniques



Del:These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • digg

2 kommentarer

  1. Martin Pagh Ludvigsen siger: (9. juni 2008 kl. 16:54 )

    Må lige knytte en kommentar til din try … catch ting - det er kun i de tilfælde, hvor der rent faktisk bliver smidt en exception, at det går langsomt, dvs hvis din catch-klausul bliver aktiveret. Ellers går det faktisk hurtigere, fordi den ikke skal køre null-testen.

    Ellers et godt tip - det viser nemlig, at try … catch ikke skal bruges til at dække over, at man ikke har styr på sine objekter.

  2. Mads Buch Stage siger: (10. juni 2008 kl. 08:57 )

    Hej Martin,

    Tak for kommentarerne!

    Har ikke selv kørt nogen test på det, bare vidererapporteret det som Joe Ebert har berettet, men det lyder logisk nok at det du siger passer, så tak for tippet :-)

    /Mads

Skriv en kommentar