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
- Relaterede artikler:
- ActionScript 3 performance tip: Slå mouseEnabled og mouseChildren fra
- Flash Player 10.1, nu også med bedre performance!
- 7 interessante sommerartikler
- Facebook aplikationer og Flash - navigateToUrl drilleri
- ActionScript 3: Picture klasse med indbygget load, brightness, contrast, saturation og hue



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.
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