Actionscript måste bli snabbare
Javascript blir allt snabbare, Actionscript måste hänga med.
Den senaste tidens framsteg hos de ledande webbläsarna när det gäller prestanda för JavaScript har gjort det tydligt att Flash och Actionscript börjar halka efter. För att fortsätta hålla Flash relevant behöver Adobe fokusera på att förbättra exekveringen av Actionscript.
Efter att i det i flera stått still på webbläsarfronten har kampen om användarna återigen blossat upp. Först var det Firefox som på allvar utmanade Internet Explorers ställning och på senare tid har Apple förfinat Safari, som använder Webkit som renderingsmotor. Opera har hela tiden funnits som en outsider. Dessutom har även Google nu gett sig in i leken med sin webbläsare Chrome.
Det intressanta är att från tidigare i stort sett enbart handla om hur bra och korrekt webbläsarna renderat webbsidor tävlar de numera även om vem som är snabbast på att hantera JavaScript. Det här har lett till att det på relativt kort tid har hänt väldigt mycket när det kommer till prestanda för JavaScript.
Annotating JavaScript for the Closure Compile är Googles senaste bidrag till att snabba upp JavaScript. Det går i korthet ut på att förse koden med mer detaljerad information om datatyper så att kompilatorn kan optimera smartare. Actionscript 3.0 har redan typinformation integrerat i syntaxen, så samma optimering är möjlig även hos Actionscript 3.0 kompilatorn.
Mot bakgrund av webbläsarnas snabba utveckling för exekvering av JavaScript har jag fått en känsla av att Flash och Actionscript halkat efter. Visst, Actionscript 3.0 innebar några rejäla kliv framåt och det är dessutom så att Tamarin, den virtuella maskinen för att köra Actionscript 3.0, är donerad till Mozilla foundation för vidare uveckling. Men hur kommer det sig att webbläsarna kan exekvera otypad JavaScript snabbare än kompilerad och typad Actionscript 3.0?
Eftersom Actionscript, till skillnad från JavaScript, kompileras till bytekod så kan förbättringar göras både i kompilatorn såväl som i den virtuella maskinen. Jag är verkligen ingen expert när det gäller kompilatorer, men jag har förstått att i dagsläget så görs väldigt få optimeringar automatiskt av kompilatorn och att det här finns stort utrymme för förbättringar.
Förutom optimering i kompilator och den virtuella maskinen måste man ge utvecklare tillgång till inline bytekod. Det skulle göra det möjligt till viss optimering och det finns dessutom vissa odokumenterade opkoder relaterade till Adobes projekt Alchemy, som jag skrivit om tidigare, som ger större tillgång till att skriva och läsa direkt från minnet. I dagsläget kan man inte göra något av detta i kompilatorn från Adobe, men det finns andra kompilatorer som klarar av det.
Jag är övertygad om att bara Adobe fokuserar på att ge utvecklare tillgång till detta skulle det ge Flashplattformen en rejäl skjuts framåt. De flesta utvecklarna, mig inkluderad, skulle inte använda sig av inline bytekod, men de skulle indirekt dra nytta av det via olika kodbibliotek. Optimering av kompilator och den virtuella maskinen skulle ge alla tillgång till bättre prestanda, utan att extra insatser.
Man måste vara medveten om att Actionscript bara är en liten del när det gäller prestanda i Flash. Oftast är det andra saker som är flaskhalsar, t.ex rendering av grafik. Actionscript har dessutom en hel del saker som inte finns i Javascript som ByteArrays t.ex. Men eftersom Flashapplikationer blir allt större och mer komplexa skulle förbättringar inom detta område ha potentialen att ge en liten extra skjuts åt många befintliga applikationer.
Bra bloggposter inom ämnet:
http://www.unitzeroone.com/blog/2009/05/22/another-scream-on-flash-alchemy-memory-and-compilers/
http://www.ncannasse.fr/blog/adobe_alchemy
http://www.ncannasse.fr/blog/virtual_memory_api
Postat 9/28/2009, Kommentarer (76)Taggar: actionscript javascript kompilator
Kommentarer:
Kommentera inlägget