2008-11-13 14 views
12

Quelle est la meilleure méthode pour analyser les performances de mes différents modèles lors de l'utilisation de Template::Toolkit?Comment puis-je profiler les performances d'un modèle dans Template :: Toolkit?

Je veux quelque chose qui décompose combien de temps CPU/système est passé à traiter chaque bloc ou fichier modèle, à l'exclusion du temps passé à traiter d'autres modèles. Devel::DProf, par exemple, est inutile pour cela, car il me dit simplement combien de temps est passé dans les différentes méthodes internes du module Template.

Répondre

15

Il s'avère que googling pour template :: toolkit profilage donne le meilleur résultat, un article de November 2005 by Randal Schwartz. Je ne peux pas copier et coller tout de l'article ici en raison de droits d'auteur, mais il suffit de dire que vous obtenez simplement his source et l'utiliser comme un module après modèle, comme ceci:

use Template; 
use My::Template::Context; 

Et vous obtiendrez la sortie comme ceci à STDERR lorsque votre script s'exécute:

 
-- info.html at Thu Nov 13 09:33:26 2008: 
cnt clk user sys cuser csys template 
    1 0 0.06 0.00 0.00 0.00 actions.html 
    1 0 0.00 0.00 0.00 0.00 banner.html 
    1 0 0.00 0.00 0.00 0.00 common_javascript.html 
    1 0 0.01 0.00 0.00 0.00 datetime.html 
    1 0 0.01 0.00 0.00 0.00 diag.html 
    3 0 0.02 0.00 0.00 0.00 field_table 
    1 0 0.00 0.00 0.00 0.00 header.html 
    1 0 0.01 0.00 0.00 0.00 info.html 
    1 0 0.01 0.01 0.00 0.00 my_checklists.html 
    1 0 0.00 0.00 0.00 0.00 my_javascript.html 
    1 0 0.00 0.00 0.00 0.00 qualifier.html 
52 0 0.30 0.00 0.00 0.00 referral_options 
    1 0 0.01 0.00 0.00 0.00 relationship_block 
    1 0 0.00 0.00 0.00 0.00 set_bgcolor.html 
    1 0 0.00 0.00 0.00 0.00 shared_javascript.html 
    2 0 0.00 0.00 0.00 0.00 table_block 
    1 0 0.03 0.00 0.00 0.00 ticket.html 
    1 0 0.08 0.00 0.00 0.00 ticket_actions.html 
-- end 

Notez que les blocs ainsi que les fichiers séparés sont répertoriés.

Ceci est, à mon humble avis, beaucoup plus utile que le module CPAN Template::Timer.