30.07.2012 Aufrufe

Leistungsoptimierung für die ADOBE FLASH-PLATTFORM

Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM

Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!