Pierwszy w Europie Adobe MAX, w którym miałem szczęście uczestniczyć, za nami. W trakcie sympozjum (konferencji?) wziąłem udział w kilku sesjach, które traktowały o optymalizacji ActionScript 3.0. Poniżej postaram się wymienić najważniejsze sposoby. Duża część z nich odbiega od przyjętych standardów programowania i często może zmniejszyć przejrzystość kodu. Dlatego warto je stosować tylko wtedy, gdy zależy nam na maksymalnej wydajności.
- minimalizujemy liczbę obiektów, efektów i animacji na ekranie
- usuwamy obiekty z listy wyświetlania zamiast robić je niewidocznymi
- wyrzucamy co się da przed pętlę
- przed wejściem w pętlę przypisujemy obliczane w pętli wartości do zmiennych
np. zamiast:
for(var i:int=0 ; i<myArray.length ; i++)
{
//some code…
}
piszemy:
var len:int = myArray.length;
for(var i:int=0 ; i<len ; i++)
{
//some code…
} - bezwzględnie używamy strong typing
- usuwamy z kodu wszystkie trace lub w opcjach publikacji włączamy omit trace actions
- unikamy porównywania różnych typów danych
- zamiast funkcji getter / setter używamy zmiennych typu public
- w pętlach zamiast i++ używamy i+=1 (tak, dla mnie to też był szok
) - stosujemy pętle for each zamiast for in
- stosujemy “”+k zamiast k.toString()
- tworzymy tablice poprzez k = [1,2,3] zamiast k = new Array(1,2,3)
- stosujemy optymalne algorytmy (to raczej oczywiste)
- staramy się używać typu int zamiast Number (zwłaszcza jako wskaźnika do tablic lub pętli)
- nie piszemy długich funkcji, gdyż flash player ma wtedy problem z alokacją rejestrów
- jeżeli tylko się da, używamy operacji logicznych zamiast arytmetycznych
np. zamiast:
var mutiplyResult:int = anAge * 8;
piszemy:
var mutiplyResult:int = anAge << 3;
Tutaj znajdziecie prezentację oraz przykłady, których autorem jest Cedric Tabin, prowadzący sesję Optimizing ActionScript 3 performance na Adobe MAX Barcelona. W dużej mierze opierałem się właśnie na nich.
Całkiem ciekawe:) Przetestujemy:D Dziex!