как проверять "быстроту" кода во flash?

psilocybe

я иногда сомневаюсь каким лучше способом описать какую-нить ситуацию в AS-коде для flash ролика. ну типа есть два вариант и надо понять какой лучше.
наверняка есть какие-нить методы типа сбора инфы по загруженности проца или вывода каких-нить данных через trace. подскажите, а? (:

Ushkvarok

вот что я использую, это самое быстрое
классика, быстрей и не сделать
точнее, пока не сделать )
1) память, потребляемая флеш-плеером

import flash.system.System;
............................................
trace(System.totalMemory/1024/1024 + " Mb");

2) узнать, как долго выполняется кусок кода (самое лучшее - getTimer )

import flash.utils.getTimer;
............................................
var startTime:int = getTimer;
//
doComplicatedTask;
//
var timeTaken:int = getTimer - startTime;

3) назначенная скорость кадров

rate.text = stage.frameRate.toString;

4) действительная скорость кадров
 

package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;

public class FrameRateMeter extends Sprite {
private var lastFrameTime:Number;
private var output:TextField;

public function FrameRateMeter {
output=new TextField ;
output.autoSize=TextFieldAutoSize.LEFT;
output.border=true;
output.background=true;
output.selectable=false;
addChild(output);

addEventListener(Event.ENTER_FRAME,enterFrameListener);
}

private function enterFrameListener(e:Event):void {
var now:Number=getTimer;
var elapsed:Number=now-lastFrameTime;
var framesPerSecond:Number=Math.round(1000/elapsed);
output.text="Actual frame rate: "+framesPerSecond+"\nDesigned frame rate" + stage.frameRate;
lastFrameTime=now;
}
}
}

    П.С. Это Колина Мука. Чтобы совсем незначительно повысить производительность, можно заменить Math.round(...) на int(... но округлять тогда будет только вниз.. или сделать вообще без округления гыгы
5) очень удобный профайлер сразу встроен в очень удобный DeMonsters дебаггер
http://demonsterdebugger.com/
Оставить комментарий
Имя или ник:
Комментарий: