Flash Player 10.1, nu også med bedre performance!

Kategori: Diverse | Kommentarer (0)
Gemt: 2010-04-15 11:12


Flash Player 10.1 har efterhånden været i beta rigtigt længe, men tilsyneladende er der også en masse gode ting at vente på, og da der nu er en release candidate på gaden, så går der forhåbentlig ikke særligt længe.

En ting jeg ikke havde hørt om var, at der også kommer en generel performance optimering i forhold til swf’er der ikke er synlige på skærmen, eksempelvis fordi de er på en helt anden tab i browseren eller fordi de er et sted på siden der ikke er synligt lige nu.

Da Flash, særligt i lyset af debatten om hvorvidt det hører hjemme på iPhone eller ej, blandt andet er under hård beskydning for at sluge en masse cpu, så synes jeg at denne nyhed absolut er værd at fokusere på.

Men, og der er jo et men.
Implementationen er delvis afhængig af, at de forskellige browser fabrikanter understøtter det, så det virker ikke på alle browsere fra start, men dog for en god del.
Den foreløbige liste kan ses her:
Press any key to continue

Og i øvrigt mere om andre små forbedringer, eksempelvis at Flash Player 10.1 også kan slå pauseskærmen fra i fullscreen, her:
6 lesser known features in Flash Player 10.1


7 interessante sommerartikler

Kategori: Diverse | Kommentarer (0)
Gemt: 2009-07-27 11:45


Der har været lidt stille på bloggen den seneste måned, dels grundet travlhed og dels grundet ferie.
Men, resten af nettet har jo heldigvis ikke ligget stillet, så her kommer en liste med 7 artikler som helt sikkert er værd at læse.

AS3 Flash Efficient Code Techniques, Vectors in Flash 10, Faster JPEG Encoding, Other Optimization Notes
Et par tip til brug af Vector, samt ikke mindst, links til en række andre gode artikler om performance optimering.

XML to ActionScript
Et bud på hvordan en xml-to-as engine kan skrues sammen, og selv hvis man ikke har brug for lige netop det, så er koden et kig værd.

Strategies for optimizing collision detection with BitmapData.hitTest
Overskriften siger det hele og der kan virkelig være meget performance at hente her!

Nurbs!
Ikke noget brugbart (endnu), men et rigtig sjovt eksperiment, der viser hvordan man også kan angribe Flash og 3D.

Keyboard events on stage are not working… why?
Hvis dine keyboard events engang imellem driller, så kan dette være grunden.

Just Another Flash IDE - Flex/Flash Builder Workflow
Big Spaceships bud på hvordan et optimalt workflow mellem udviklere og designere kan skrues sammen, vel og mærke, hvor ingen af parterne er bundet til at bruge det samme software.

Text Layout Framework
Adobe’s open source framework til at lave avanceret textlayout i Flash og Flex - tjek det ud, det er ganske imponerende.


Actionscript 3 performance optimering

Kategori: Diverse | Kommentarer (2)
Gemt: 2008-05-30 12:49


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


ActionScript 3 performance tip: Slå mouseEnabled og mouseChildren fra

Kategori: Tips og tricks | Kommentarer (2)
Gemt: 2008-03-27 11:09


Jeg kan ikke tage æren for dette ActionScript 3 tip, men det skal ikke udelukke mig fra at bringe det:
Hvis du har mange objekter på scenen, så kan man ofte halvere CPU forbruget ved at sætte mouseEnabled = false og mouseChildren = false på de objekter som rent faktisk ikke skal interagere med musen.

Så, tak til NateJC for at dokumentere det:
mouseEnabled and mouseChildren Affect CPU Load

Og til Ryan Taylor for at påpege det (se den første kommentar):
Does this code make my Flash look fat?


Undgå suboptimering - både i din kode og alle andre steder!

Kategori: Diverse | Kommentarer (3)
Gemt: 2007-07-4 14:43


Viden kan både være en lyksagelighed og en hæmsko, alt efter hvordan man bruger den.

Suboptimering når man koder
Et eksempel er når man sidder og koder, og måske går efter den på papiret optimale løsning i første hug.
Med andre ord, så begynder man måske at performance optimere på delelementer af koden lang tid før man har det fulde overblik over hvad løsningen samlet kommer til at indeholde.

Umiddelbart lyder det måske smart, løbende at performance optimere, ekstra performance er jo altid godt, og hvorfor gøre noget til sidst som kan gøres med det samme?

Den aller, aller vigtigste grund er, at det på forhånd er meget svært at sige præcis hvilken del af koden, eller projektet som helhed, der vil være flaskehalsen: Måske er det en funktion der kaldes ofte, måske er det en gennemsigtig gradient, måske er det et dårligt indeks på databasen, måske måske måske.

4 timer brugt på optimering et sted giver måske kun en samlet hastighedsforøgelse på 1%, mens 1 time brugt et andet sted kan fordoble performance. Det har jeg i hvert fald selv været ude for.

Det er klart, at det er godt at have performance overvejelser med fra første færd, og har man fundet en ny måde at gøre en given ting på, som både er lige så hurtig at kode og som stadig producerer overskuelig kode, så er det naturligvis oplagt at bruge den.
Men, mærker man at man begynder at lave krumspring for at optimere, så gem det til senere.

Suboptimering andre steder
Men, det er ikke kun når man koder at man kan være tilbøjelig til at optimere de forkerte ting, også uden for computerens verden kan der være gevinster at hente.

Prisjagt
Forestil dig f.eks. at du skal ud og købe en ny dvd-afspiller, og du har fundet ud af hvilken model det skal være.
Hvor lang tid skal du så bruge på at lede efter den billigste pris?

Hvis der er tale om noget til under 1000 kroner, så er svaret: Ikke ret længe.
Bruger du eksempelvis 1 time og opnår at spare 150 kr, så er det jo en underskudsforretning hvis den samme time kunne have givet dig en indtægt på 300 kroner.

Parkeringsjagt
Et andet eksempel kunne være, at du arbejder i udkanten af København og skal til et møde inde i byen.
Skal du så tage din egen bil eller en taxa?
Husk på, det tager tid at finde en parkeringsplads (tid=penge) og det koster også noget at parkere.

Svaret vil afhænge af mange variabler, men selvom man har egen bil er det en overvejelse værd.

Aftensmaden
Lad os sige at du står for aftensmaden og skal lave spaghetti med kødsovs.
Du ved at magert kød er sundt og at økologi er godt for dyrene, så derfor bruger du 35 kr. på noget godt fars.
Men samtidig tager du måske den første og bedste pasta til 5 kr. og det på trods af at man i løbet af måltidet rent faktisk spiser mere pasta end kød.

Spørgsmålet er jo så, hvor meget du får ud af at der er tale om noget bedre, eller om det ville være bedre at bruge 25 kr. på kød og 15 kr. på pasta?

Igen, så kender jeg ikke svaret, men det er værd at tænke over.

Pointen bag alle eksemplerne er, at man ikke skal fokusere på den enkelte handling, men på det store billede.
Det er nemlig den eneste måde at undgå suboptimering.