Moi aussi je veux un blog technique actionscript stuff….

27juil/092

Benchmark : booste ton code

Je vais commencer par vous présenter une petite classe dispo sur mon SVN qui peut s'avérer utile pour certains :

la classe Benchmark.

Son but est simple, pouvoir comparer facilement la rapidité d'exécution de plusieurs fonctions pour au final ne conserver que la plus rapide (ou la plus lente, c'est vous qui voyez).

Comme un petit bout de code vaut mieux qui long discours confus, exemple :

Création des fonctions à comparer :

private function func1( a : Array ) : void { for ( var  i : int = 0 ; i < a.length; ++) ; }
private function func2( a : Array ) : void { for each ( var  i : * in a ) ; }
private function func3( a : Array ) : void { var l : int = a.length ; for ( var  i : int = 0 ; i < l; ++) ; }

Initialisation du benchmark avec deux paramètres :
-le nombre d'itérations : correspond au nombre de fois ou chaque fonction sera exécutée à chaque boucle
-le nombre de boucles : correspond au nombre de boucles à faire pour calculer la moyenne

on ajoute le bench à la scène pour afficher le résultat.

var bench : BenchMark = new BenchMark(1000, 10) ;
addChild(bench);

on peut désormais ajouter ses fonctions au bench :
la méthode addFunction accepte les paramètres suivants :
- la fonction à tester
- le scope de la fonction
- la label a afficher pour cette fonction
- le reste des paramètres à transmettre.

// The param to give to the functions
test = new Array() ;
for ( var i : Number = 0 ; i < 5000 ; i++)  test.push(i) ;

bench.addFunction( func1, this, "for with length inside", test) ;
bench.addFunction( func2, this, "for each", test) ;            
bench.addFunction( func3, this, "for int", test) ;

Une fois ceci fait, il ne reste plus qu'à lancer le test pour obtenir le résultat :

bench.start();

Résultat :

capture benchmark

Et oui je suis également un UI Designer émérite.

la classe !

Commentaires (2) Trackbacks (0)
  1. Bien sympa cette petite classe :)
    Va falloir que je teste ca sur certaines parties de mes projets

  2. Han ! Mon premier commentaire et je met 10 ans à le voir ! Si par hasard cela peut te servir un jour, j’en serais absolument ravi ! (parce que finalement moi je ne m’en sers quasiment jamais…)


Leave a comment

(required)

Trackbacks are disabled.