Accueil > > > ASP.NET - CONNAÎTRE LE TEMPS D'EXECUTION DE SA PAGE OU DU CHARGEMENT D'UN OBJET
ASP.NET - CONNAÎTRE LE TEMPS D'EXECUTION DE SA PAGE OU DU CHARGEMENT D'UN OBJET
Information sur la source
Description
Dans le cadre de développement et surtout dans un but d'optimisation, il est très utile de connaître le temps de chargement de certains objets et de la page globale. Pour la page, on va passer par une astuce fournie sur le site de C2I (http://www.c2i.fr/code.aspx?IDCode=359) que j'ai adapté pour mes besoins. Tout d'abord il faudra modifier le fichier Global.asax.vb, ensuite ajouter le contrôle utilisateur (User control) fourni et modifier le Web.config pour faire en sorte qu'il soit visible ou non.
Source
' --------- Global.asax.vb ---------------------------
Imports System.Web
Imports System.Web.SessionState
' -----------------------------------------------------
Public Class Global
Inherits System.Web.HttpApplication
Private dTimeDeb As DateTime
....
' -----------------------------------------------------
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' Se déclenche lorsque la session se termine
Session.RemoveAll()
End Sub
....
' -----------------------------------------------------
Private Sub Global_PreRequestHandlerExecute(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRequestHandlerExecute
dTimeDeb = DateTime.Now
End Sub
' -----------------------------------------------------
Private Sub Global_PostRequestHandlerExecute(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PostRequestHandlerExecute
Session.Item("TempsExecutionPage") = DateTime.Now.Subtract(dTimeDeb).TotalMilliseconds.ToString
End Sub
....
' -----------------------------------------------------
End Class
' ------------------------------------------------------
' Dans le fichier Web.Config
...
<appSettings>
...
<add key="AfficheStats" value="1"/>
<!-- mettre 1 pour afficher les stats, 0 pour ne pas les afficher -->
...
</appSettings>
' ------------------------------------------------------
'Maintenant il suffit de poser (dans Visual Studio.NET) le User Control
'dans la page voulue et dans le source de cette page
'(disons toto.aspx et toto.aspx.vb) ajouter le code suivant.
' Nous allons tester le temps de chargement d'un Dataset (il faudra l'adapter à vos besoins)
' ------------------------------------------------------
' Fichier toto.ASPX
....
<%@ Register TagPrefix="uc1" TagName="AfficheStats" Src="AfficheStats.ascx" %>
....
<uc1:AfficheStats id="AfficheStats1" runat="server"></uc1:AfficheStats>
....
' ------------------------------------------------------
' Fichier toto.ASPX.VB
....
Private dTimeDebSQL As DateTime
....
' On initialise la variable de temps
dTimeDebSQL = DateTime.Now
MonDataset = ... 'Chargement de mon Dataset
'On ajoute en mémoire la valeur et le texte de présentation du temps
Session.Item("TempsExecutionSQL") &= "Chargement de MonDataset : " & DateTime.Now.Subtract(dTimeDebSQL).TotalMilliseconds.ToString & " ms<BR>"
....
'On peut en ajouter autant que l'on veut suivre dans la page simplement en remettant le même bloc.
dTimeDebSQL = DateTime.Now
MonDataset2 = ... 'Chargement de mon Dataset
'On ajoute en mémoire la valeur et le texte de présentation du temps
Session.Item("TempsExecutionSQL") &= "Chargement de MonDataset2 : " & DateTime.Now.Subtract(dTimeDebSQL).TotalMilliseconds.ToString & " ms<BR>"
....
' ------------------------------------------------------
'Copie de la source pour le Fichier User Control : AfficheStats.ascx (et .vb)
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="AfficheStats.ascx.vb" Inherits="MonProjet.AfficheStats" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<asp:Panel id="Panel1" runat="server" style="RIGHT:0px;BOTTOM:0px;POSITION:absolute;HEIGHT:auto">
<table class="AfficheStat" width="300" cellSpacing="0" cellPadding="0" border="0">
<tr width="100%">
<td>Temps exécution Page :</td>
<td><asp:Label id="LabelTempsExecPage" runat="server" Width="100%">Label</asp:Label></td>
</tr>
<tr>
<td>Temps exécution Requette :</td>
<TD><asp:Label id="LabelTempsExecRequette" runat="server" Width="100%">Label</asp:Label></TD>
</tr>
</table>
</asp:Panel>
' ----------- AfficheStats.ascx.vb -----------------------------
Public MustInherit Class AfficheStats
Inherits System.Web.UI.UserControl
Protected WithEvents LabelTempsExecPage As System.Web.UI.WebControls.Label
Protected WithEvents Panel1 As System.Web.UI.WebControls.Panel
Protected WithEvents LabelTempsExecRequette As System.Web.UI.WebControls.Label
#Region " Code généré par le Concepteur Web Form "
'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim AfficheStats As String = ConfigurationSettings.AppSettings("AfficheStats")
If AfficheStats = 1 Then
Panel1.Visible = True
LabelTempsExecPage.Text = Session.Item("TempsExecutionPage") & " ms"
LabelTempsExecRequette.Text = Session.Item("TempsExecutionSQL")
Else
Panel1.Visible = False
End If
End Sub
End Class
' ------------------------------------------------------
Conclusion
Cet outil est très simple.
En revanche il faut prendre garde dans le cas de l'utilisation d'un Handler dans la page où on place ce User Control, en effet, le système des Handlers ne gère pas le chargement de la variable de session dans le Global.asax, ainsi la page ne fonctionnera pas et l'initialisation du timer de chargement de la page ne sera pas possible et surtout ca fait planter le Handler.
Il faut juste ne pas utiliser le calcul du temps global d'exécution de la page, en revanche celui de chaque objet se fait sans soucis.
----------------------------- Bon coding.
Romelard Fabrice (Alias F___)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
[ASP.NET/VB.NET] Chargement d'un UserControl [ par Netlink ]
Bonjour à tous, Je cherche un moyen de charger un contrôle utilisateur en fonction p
Pb avec le composant ASPEXEC [ par cracozore ]
Bonjour à tous,J'ai un problème quand je fait apel au composant AspExec, j'obtiens ce message d'erreur :"Type d'erreur :Objet Server, ASP 01
associer objet et variables ? [ par aurelien2003 ]
bonjour,je m'explique, imaginons que j'ai 3 labels : label1, label2 et label3.j'ai également un integer i qui varie de 1 à 3 comment faire p
Bouton et chargement de page [ par Ayanami104 ]
Bonjour, J'ai encore besoin de votre aide ^^ Jai un bouton qui change le style dun div. (ex: qui le passe d'un fond bleu a rouge) Imaginons qu'il soit
ASP.NET et notion d'objet [ par blueangel ]
Bonjour tout le monde,je débute dans ASP.NET mais j'ai pas mal de notion sur l'orienté objet, et puisque gérer du code C# c'est carr
usercontrol et html [ par tmcuh ]
bonjour voilà toujours un petit problème avec mon control utilisateur web. En fait dans le code html de celui-ci je définis un lien hyp
Comment accèder à une classe sur un serveur (Web Service) ? [ par digital3d ]
J'ai donc un Web Service sur le serveur, le web service s'appelle "toto.asmx", à côté du web service, j'ai créer une classe appel&
Impossible d'ajouter des éléments à un objet Dictionary [ par Chris_LaFouine ]
J'ai un problème concernant l'objet Dictionary... voilà mon code...set dictListeParam=Server.CreateObject("Scripting.Dictionary")While NOT r
exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet. [ par firas_tn ]
Salut a tousj'ai un programmes ou il ya quelques erreurs dont une que je vous envoi et je n'ai pas trouvé comment la corriger,voila la ligne ou s
Exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet. [ par firas_tn ]
Salut a tousj'ai un programme ou il ya quelques erreurs dont une que je vous envoi et je n'ai pas trouvé comment la corriger,voila la ligne ou s'
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GRIDVIEW CHECKBOXGRIDVIEW CHECKBOX par invent001
Cliquez pour lire la suite par invent001 OUTIL MYSQLOUTIL MYSQL par nobla
Cliquez pour lire la suite par nobla
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|