2010-05-03 4 views
0

Par exemple.Temps de mesure pris pour afficher un objet dans Flex

function showIt():void { 
    something.visible = true; 
} 

function init():void { 

    time1 = flash.utils.getTimer(); 
    showIt(); 
    time2 = flash.utils.getTimer(); 

} 

<mx:st id="something" visible="false"/> 
<mx:Button click="init()"/> 

Dans le code ci-dessus, je veux mesurer le temps nécessaire pour afficher st à l'écran.
Est-il suffisant de calculer time2 - time1?
Ou devrais-je mettre un gestionnaire d'événements sur de rendre?
Ou d'une autre manière?

Répondre

2

Vous devriez essayer Grant Skinner's AS3 Performance Test Harness.

Voici une démo simple en action (sur son blog):

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– 
performancetests.GraphicsTests (5 iterations) 
Testing different approaches for drawing.        
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– 
method...................................................ttl ms...avg ms 
tare [3]              2  0.40 
drawPath             242 48.40 
drawPathShort            171 34.20 
fullPath             182 36.40 
reference             127 25.40 
shortReference            129 25.80 
withGraphics            1154 230.80 
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– 

Dans le download il a une classe appelée "RenderTest.as", qu'il décrit avec:

Représente un test de rendu, qui prend le temps nécessaire pour dessiner un DisplayObject spécifié sur une instance BitmapData.

Je l'utilise tout le temps, c'est génial.

Espérons que ça aide, Lance

0

time2 - time1 va vous donner le temps nécessaire pour définir la propriété visible du UIComponent à true - qui pourrait être juste quelques lignes de code. Le rendu réel se produit à intervalles réguliers lorsque l'événement UIComponent déclenche enterFrame. Je ne connais aucune méthode pour mesurer le temps nécessaire pour rendre un composant particulier, et je ne pense pas que vous puissiez le faire. Une idée qui vient à l'esprit est d'écouter ENTER_FRAME et de calculer la différence de temps entre deux événements consécutifs (ou mieux: prendre en moyenne, par exemple, 100 images) pour obtenir une estimation du temps nécessaire pour rendre l'ensemble étape. Maintenant, répétez l'expérience après avoir retiré le composant particulier de la scène. La différence entre les deux horaires vous donnera une idée du temps nécessaire pour rendre votre composant.

1

Utilisation du profileur sera probablement plus intéressant de comparer ces opérations.

Questions connexes