2011-01-18 1 views
1

Le contrôleur effectue quelques appels au modèle, puis il renvoie des données à la vue. La vue en réalité, malheureusement, (ce n'est pas ma faute), contient une tonne de requêtes en ligne et plus d'appels au modèle, ouais je sais. De toute façon, je suis chargé d'optimiser cette page très lente et j'essaie de comprendre comment je peux dire quelle chose prend le plus de temps. J'allais juste mettre une minuterie au début et à la fin de chaque «chose» que la page fait et les sortir dans un journal avec le numéro de ligne ou quelque chose. Mais je ne suis pas sûr de la manière la plus précise de le faire.J'ai une page très lente, comment puis-je comprendre sur le M, V ou C? Quel genre de mécanisme de synchronisation serait précis?

//in controller 
StartTimer(); 
var something = model.something.getsomething(someID); 
StopTimerAndLog(3); //line number 

<!-- in view --> 
<%StartTimer(); 
var something = model.somethingelse.getanotherthing(someotherID); 
StopTimerAndLog(2);%> 

ainsi de suite et ainsi de suite ...

Ensuite, la question reste sur ce mécanisme à utiliser le moment, je suis sûr qu'il doit y avoir une question sur ce déjà. Mais je ne sais pas si ma situation rend quelque chose d'unique ou pas ... des idées?

Répondre

6

Si vous voulez vraiment mesurer comme ça, j'utiliser the StopWatch class:

var watch = new StopWatch(); 
watch.Start(); 
var something = model.something.getSomething(someID); 
watch.Stop(); 

var time = watch.Elapsed; 

Si vous voulez quelque chose de vraiment détaillée et sans écrire de code supplémentaire ... je suggère l'utilisation d'un profileur. Il vous donnera des détails sur exactement ce qui prend si longtemps et pourquoi. Mon favori personnel est RedGate's ANTS Performance Profiler.

+0

Merci pour la réponse rapide, cela me donne quelque chose à essayer tout de suite pendant que j'attends plus de commentaires pour se déverser dans – BigOmega

+0

Je seconde fortement la dernière recommandation de Justin. L'utilisation d'un profileur comme ANTS ou dotTrace est une bien meilleure approche que le débogage printf. –

+0

+1: @Justin Niessner - juste curieux si Profiler peut être utilisé pour tester correctement une application? Ou des outils recommandés? – VoodooChild

Questions connexes