com.neolao.test.Speed
Fait un test de vitesse sur des fonctions
Exemple
var a:Function = function(p){ return p*p; }; var b:Function = function(p){ return Math.pow(p, 2); }; Speed.run([a, b]);
Propriétés
Visibilité | Type | Nom | Status | Description |
---|---|---|---|---|
static public | Number | loop | Nombre d'invocations des fonctions | |
static public | Array | functions | Liste des fonctions à tester | |
static public | Array | params | Liste des paramètres des fonctions | |
static public | Array | result | Liste des résultats de chaque test |
Méthodes
Visibilité | Return | Nom | Param 1 | Param 2 | Param 3 | Description |
---|---|---|---|---|---|---|
static public | String | run | pFunctions:Array | pParams:Array | pLoop:Number | Test de fonctions |
static private | Void | _run | Exécution du test | |||
static private | Void | _fastest | Calcul du plus rapide |
Change Log
[13/06/2005] Version 1.0
Création
Source
/** * Fait un test de vitesse sur des fonctions * @author neolao <neo@neolao.com> * @version 1.0 (13/06/2005) */ class com.neolao.test.Speed{ static public var className:String = "Speed"; static public var version:String = "1.0"; // ----------------------------- VARIABLES --------------------------------- /** * Nombre d'invocations des fonctions */ static public var loop:Number = 10000; /** * Liste des fonctions à tester */ static public var functions:Array; /** * Liste des paramètres des fonctions */ static public var params:Array; /** * Liste des résultats de chaque test */ static public var result:Array; /*=========================== METHODES PRIVEES ===========================*/ /*========================================================================*/ /** * Exécution du test */ static private function _run(Void):Void{ var vTimeStart, f, i:Number; var vParams:Array; result = new Array(); for(f=0; f<functions.length; f++){ vParams = (params[f][1] != undefined)?params[f]:new Array(params[f]); vTimeStart = getTimer(); for(i=0; i<loop; i++){ functions[f].apply(null, vParams); } result[f] = new Object(); result[f].time = getTimer() - vTimeStart; result[f].average = result[f].time / loop; } _fastest(); } /** * Calcul du plus rapide */ static private function _fastest(Void):Void{ var vFastest:Number = -1; for(var r:Number=0; r<result.length; r++){ if(vFastest == -1 || result[r].time < vFastest){ vFastest = result[r].time; } } for(r=0; r<result.length; r++){ result[r].percent = Math.ceil(100 * result[r].time / vFastest); if(result[r].time == vFastest){ result[r].flag = " -> "; }else{ result[r].flag = " "; } } } /*===================== FIN = METHODES PRIVEES = FIN =====================*/ /*========================================================================*/ /*============================ GETTER SETTER ============================*/ /*========================================================================*/ /*====================== FIN = GETTER SETTER = FIN ======================*/ /*========================================================================*/ /*========================== METHODES PUBLIQUES ==========================*/ /*========================================================================*/ /** * Test de fonctions * @param pFunctions La liste des fonctions à tester * @param pParams La liste des paramètres de ces fonctions * @param pLoop Le nombre d'invocations des fonctions */ static public function run(pFunctions:Array, pParams:Array, pLoop:Number):String{ var vResult:String = ""; functions = pFunctions; params = pParams; if(pLoop){ loop = pLoop; } _run(); vResult += "------ SPEED TEST --------------------------------------\n"; for(var r:Number=0; r<result.length; r++){ vResult += "[" + (r+1) + "]" + result[r].flag + result[r].percent + "% (time:" + result[r].time + "ms, average:" + result[r].average + "ms)\n"; } vResult += "--------------------------------------------------------"; trace(vResult); return vResult; } /*==================== FIN = METHODES PUBLIQUES = FIN ====================*/ /*========================================================================*/ }