PDA

Просмотр полной версии : Как посчитать время выполнения скрипта?


Ноябрь
31.10.2007, 23:48
package {
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.MovieClip;
import flash.events.MouseEvent;

public class base extends MovieClip {

public function base() {
public var sec:Timer = new Timer(1);
sec.start();
for (var i:int = 0;i<30000000;i++){
var v1:Number = Math.random();
var v2:Number = Math.random();
var v3:Number = v1/v2;
}
sec.addEventListener("timer", timerHandler);
}

public function timerHandler(event:TimerEvent):void {
trace("timerHandler: " + event.currentTarget.currentCount);
event.currentTarget.stop();
}
}
}

вот.. полистал хелп, нашел этот класс, и хотя сама флэшка грузится секунд 7-8, event.currentTarget.currentCount стабильно выводит 1, в данном случае это повидимому 0,01 с. Видимо этот класс для других целей, т.к sec.start(); срабатывает после полного выполнения скрипта.

Как еще можно измерить время выполнения скрипта?)

DarkLight
31.10.2007, 23:51
getTimer() , как и раньше. Теперь он во flash.utils просто.

etc
31.10.2007, 23:55
Таймер не подходит для подобных тестов. getTimer в руки.

Ноябрь
31.10.2007, 23:56
пасиб, оно:)

Nirth
01.11.2007, 00:01
У меня даже такой класс был

package kii.utils
{
import flash.utils.Dictionary;
import flash.utils.getTimer;
/**
* Class used for time tests.
* @author David
* @usage <code>
* var id:String = TimeTest.startTest('myTest');
* for each(var item:String in ['Sally', 'Billy', 'Bobby', 'Froggy'])
* {
* trace(item);
* }
* trace(TimeTest.endTest(id).toString());
* </code>
*/
public class TimeTest
{
/**
* @private
*/
private static var ids:Dictionary = new Dictionary(true);
/**
* Starts a test.
* @param id Id of a test.
* @return Id.
*/
public static function startTest(id:String = 'default'):String
{
ids[id] = getTimer();
return id;
}
/**
* Ends tests with given id.
* @param id Id of a test.
* @return Time from <code>startTest</code> invocation.
*/
public static function endTest(id:String = 'default'):Number
{
if(ids[id] == null) return -1;

var result:Number = getTimer() - ids[id];
ids[id] = null;
return result;
}
}
}

Nirth
01.11.2007, 00:10
Предупреждая вопросы, нафига он.

Это тестовый класс(тоесть класс который не используеться в приложениях на стадии production) поэтому его легко изменять, вставляя трейсы, сохраняя данные и кучу всего не боясь что ты его забажишь(потом класс просто удаляеться перед деплоем, и все ссылки на него).