2010-03-23 15 views
2

Je veux calculer le temps d'exécution de mes pages ASP.NET et l'afficher sur la page. Actuellement, je calcule la durée d'exécution à l'aide d'un System.Diagnostics.Stopwatch, puis stocke la valeur dans une base de données de journal.Comment puis-je calculer le plus précisément le temps d'exécution d'une page ASP.NET tout en l'affichant sur la page?

Le chronomètre est démarré dans OnInit et arrêté dans OnPreRenderComplete. Cela semble fonctionner très bien, et cela donne un temps d'exécution similaire à celui montré dans la trace de la page.

Le problème est maintenant que je ne suis pas en mesure d'afficher le temps d'exécution sur la page parce que le chronomètre est arrêté trop tard dans le cycle de vie.

Quelle est la meilleure façon de faire cela?

Répondre

0

Je voudrais obtenir le temps écoulé du chronomètre pendant le temps de rendu. La plupart (probablement presque tous) du temps d'exécution de la page s'est écoulé à ce stade. Allez-y et arrêtez le chronomètre où vous êtes maintenant et utilisez ce numéro pour vous connecter à votre base de données. Je parie que ce ne sera pas très différent de ce qui est affiché sur la page.

+0

Devrait être assez bon :) – henningst

0

Conservez les informations sur l'heure d'exécution sur le serveur (base de données, système de fichiers, cache), puis utilisez ajax ou jquery pour l'extraire du serveur dans une zone de la page de manière asynchrone.

1

Here une solution de travail qui redéfinit les méthodes Page_Init() et Page_preRender() pour obtenir les différences dans le temps.

private int startTime; 

protected void Page_Init(object sender, EventArgs e) 
{ 
    startTime = Environment.TickCount; 
} 
protected void Page_PreRender(object sender, EventArgs e) 
{ 
    int endTime = Environment.TickCount; 
    double executionTime = (double)(endTime - startTime)/1000.0; 

    lblLabel.Text = "Page Execution time is " + executionTime + " seconds."; 
}