Leistungsoptimierung für die ADOBE FLASH-PLATTFORM
Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM
Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
LEISTUNGSOPTIMIERUNG FÜR DIE <strong>FLASH</strong>-<strong>PLATTFORM</strong><br />
Leistung in ActionScript 3.0<br />
Der Aufruf von Funktionen kann viel Arbeitsleistung in Anspruch nehmen. Versuchen Sie, <strong>die</strong> Anzahl der<br />
Funktionsaufrufe zu verringern, indem Sie Code inline platzieren. Die Inline-Platzierung von Code eignet sich gut,<br />
wenn <strong>die</strong> <strong>Leistungsoptimierung</strong> im Vordergrund steht. Beachten Sie jedoch, dass Inline-Code <strong>die</strong> Wiederverwendung<br />
von Code erschweren und zu einer größeren SWF-Datei führen kann. Einige Funktionsaufrufe, wie beispielsweise <strong>die</strong><br />
Methoden der Math-Klasse, können problemlos inline platziert werden. Im folgenden Code wird <strong>die</strong> Math.abs()-<br />
Methode verwendet, um absolute Werte zu berechnen:<br />
const MAX_NUM:int = 500000;<br />
var arrayValues:Vector.=new Vector.(MAX_NUM,true);<br />
var i:int;<br />
for (i = 0; i< MAX_NUM; i++)<br />
{<br />
arrayValues[i] = Math.random()-Math.random();<br />
}<br />
var started:Number = getTimer();<br />
var currentValue:Number;<br />
for (i = 0; i< MAX_NUM; i++)<br />
{<br />
currentValue = arrayValues[i];<br />
arrayValues[i] = Math.abs ( currentValue );<br />
}<br />
trace( getTimer() - started );<br />
// output : 70<br />
Die von Math.abs() durchgeführte Berechnung kann manuell erfolgen und inline platziert werden:<br />
const MAX_NUM:int = 500000;<br />
var arrayValues:Vector.=new Vector.(MAX_NUM,true);<br />
var i:int;<br />
for (i = 0; i< MAX_NUM; i++)<br />
{<br />
arrayValues[i] = Math.random()-Math.random();<br />
}<br />
var started:Number = getTimer();<br />
var currentValue:Number;<br />
for (i = 0; i< MAX_NUM; i++)<br />
{<br />
currentValue = arrayValues[i];<br />
arrayValues[i] = currentValue > 0 ? currentValue : -currentValue;<br />
}<br />
trace( getTimer() - started );<br />
// output : 15<br />
Durch <strong>die</strong> Inline-Platzierung des Funktionsaufrufs kann der Code viermal so schnell ausgeführt werden. Diese<br />
Strategie bietet zahlreiche Vorteile, sie kann sich jedoch negativ auf <strong>die</strong> Wiederverwendbarkeit und<br />
Pflegefreundlichkeit des Codes auswirken.<br />
Letzte Aktualisierung 9.5.2012<br />
47