ASP.NET - CONNAÎTRE LE TEMPS D'EXECUTION DE SA PAGE OU DU CHARGEMENT D'UN OBJET
fyrrhom
Messages postés20Date d'inscriptionmercredi 26 mars 2003StatutMembreDernière intervention27 mars 2009
-
13 janv. 2004 à 15:35
cs_morisse
Messages postés7Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention10 août 2006
-
10 août 2006 à 10:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Ici un bout de code (C#) qui se passe de commentaire... ou presque
using System.Diagnostics;
public void MyFunction()
{
Stopwatch sw= new Stopwatch();
sw.Start();
////////////////////////
//'Code' a chronometrer
////////////////////////
sw.Stop();
long lngDuration = sw.ElapsedMilliseconds;
}
Gb3n
Messages postés4Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention18 août 2005 18 août 2005 à 16:34
re bonjour,
je tappotais mon rapport de stage quand la solution m'éclata au grand jour (et oui comme dans les films ...). Bète je suis de ne pas y avoir pensé plus tôt tellement est simple la solution:
En faite il suffit de fixer la date de début de l'exécution de la page dans la session lors de l'évènement "Global_PreRequestHandlerExecute". Ainsi nous obtenons le début de la création de la page.
Et la fin de la création de celle ci, permettant tout de même de réécrire un élément sur cette dernière, n'est autre que l'évènement "pre_render".
Donc dans ce dernier évènement on récupère la date de début qui se trouve dans la session que l'on soustrait à "now" et on affiche le tout dans un champ text par exemple.
Certe ceci fausse un peu la vraie valeur car une fois la soustraction faite l'exécution de la page n'est pas réellement terminée mais bon l'affectation d'une valeur dans un champ text prend tellement peu de temps ...
Voili voilou !
bye
Gb3n
Messages postés4Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention18 août 2005 18 août 2005 à 11:06
Bonjour,
Principe fort intéressant mais un problème survient alors de l'utilisation de la collection "session" pour relater le temps d'execution à la page:
l'évenement du global.asax "PostRequestHandlerExecute" se déroule après l'évenement "Page_Load" de la page renvoyée. Ainsi lors du premier chargement (appel du "page_load")la variable de session "TempsExecutionPage" n'existe pas, elle n'existera qu'apres avoir exécuté "PostRequestHandlerExecute", c'est à dire juste après. Deplus ceci engendre un décalage de l'information, on ne connait pas la durée d'execution de la page en cours mais seulement celui de la page précédente.
exemple:
* première requete
-page_load
session.item("TempsExecutionPage") égale à "rien"
donc affichage "rien"
-PostRequestHandlerExecute
session.item("TempsExecutionPage") = 0,32 ms (temps indicatif de chargement de la page de la premiere requete)
* seconde requete
-page_load
session.item("TempsExecutionPage") égale à 0,32 (temps de la premiere requete )
donc affichage 0,32
-PostRequestHandlerExecute
session.item("TempsExecutionPage") = 1.02 ms (temps indicatif de chargement de la page de la seconde requete)
* troisieme requete
-page_load
session.item("TempsExecutionPage") égale à 1.02 (temps de la seconde requete )
donc affichage 1.02
-PostRequestHandlerExecute
session.item("TempsExecutionPage") = 0.62 ms (temps indicatif de chargement de la page de la troisieme requete)
On affiche alors le temps de la page précédente à chaque fois ...
Pour remedier à cela il faudrait un évènement du global.asax qui s'excute juste avant le "pre_render" de la page...
Personnellement je n'ai pas trouvé ...
Domage l'idée était bonne ...
Bye
fyrrhom
Messages postés20Date d'inscriptionmercredi 26 mars 2003StatutMembreDernière intervention27 mars 2009 13 janv. 2004 à 15:35
Bonjour,
je viens de le tester, mais le temps ne s'affiche pas.
Est-ce qu'il y a possibilité d'avoir des exemples de pages dans un zip.
Merci d'avance
10 août 2006 à 10:54
http://msdn2.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx
Ici un bout de code (C#) qui se passe de commentaire... ou presque
using System.Diagnostics;
public void MyFunction()
{
Stopwatch sw= new Stopwatch();
sw.Start();
////////////////////////
//'Code' a chronometrer
////////////////////////
sw.Stop();
long lngDuration = sw.ElapsedMilliseconds;
}
18 août 2005 à 16:34
je tappotais mon rapport de stage quand la solution m'éclata au grand jour (et oui comme dans les films ...). Bète je suis de ne pas y avoir pensé plus tôt tellement est simple la solution:
En faite il suffit de fixer la date de début de l'exécution de la page dans la session lors de l'évènement "Global_PreRequestHandlerExecute". Ainsi nous obtenons le début de la création de la page.
Et la fin de la création de celle ci, permettant tout de même de réécrire un élément sur cette dernière, n'est autre que l'évènement "pre_render".
Donc dans ce dernier évènement on récupère la date de début qui se trouve dans la session que l'on soustrait à "now" et on affiche le tout dans un champ text par exemple.
Certe ceci fausse un peu la vraie valeur car une fois la soustraction faite l'exécution de la page n'est pas réellement terminée mais bon l'affectation d'une valeur dans un champ text prend tellement peu de temps ...
Voili voilou !
bye
18 août 2005 à 11:06
Principe fort intéressant mais un problème survient alors de l'utilisation de la collection "session" pour relater le temps d'execution à la page:
l'évenement du global.asax "PostRequestHandlerExecute" se déroule après l'évenement "Page_Load" de la page renvoyée. Ainsi lors du premier chargement (appel du "page_load")la variable de session "TempsExecutionPage" n'existe pas, elle n'existera qu'apres avoir exécuté "PostRequestHandlerExecute", c'est à dire juste après. Deplus ceci engendre un décalage de l'information, on ne connait pas la durée d'execution de la page en cours mais seulement celui de la page précédente.
exemple:
* première requete
-page_load
session.item("TempsExecutionPage") égale à "rien"
donc affichage "rien"
-PostRequestHandlerExecute
session.item("TempsExecutionPage") = 0,32 ms (temps indicatif de chargement de la page de la premiere requete)
* seconde requete
-page_load
session.item("TempsExecutionPage") égale à 0,32 (temps de la premiere requete )
donc affichage 0,32
-PostRequestHandlerExecute
session.item("TempsExecutionPage") = 1.02 ms (temps indicatif de chargement de la page de la seconde requete)
* troisieme requete
-page_load
session.item("TempsExecutionPage") égale à 1.02 (temps de la seconde requete )
donc affichage 1.02
-PostRequestHandlerExecute
session.item("TempsExecutionPage") = 0.62 ms (temps indicatif de chargement de la page de la troisieme requete)
On affiche alors le temps de la page précédente à chaque fois ...
Pour remedier à cela il faudrait un évènement du global.asax qui s'excute juste avant le "pre_render" de la page...
Personnellement je n'ai pas trouvé ...
Domage l'idée était bonne ...
Bye
13 janv. 2004 à 15:35
je viens de le tester, mais le temps ne s'affiche pas.
Est-ce qu'il y a possibilité d'avoir des exemples de pages dans un zip.
Merci d'avance