SharePoint 2010 : Mesurer le temps d'exécution de votre code

J’ai récemment parcouru un blog dont le sujet était “Comment mesurer le temps d’exécution de votre code”. En résumé, l’auteur de ce blog expliquait que lorsqu’on souhaite optimiser une webpart custom et autres composants SharePoint pour améliorer les performances, il peut être intéressant de mesurer le temps d’exécution de certains morceaux de code.

Il illustre son propos par ce bout de code :

   1:  var timer = System.Diagnostics.Stopwatch.StartNew();
   2:   
   3:  (your code goes here)
   4:   
   5:  timer.Stop();
   6:  Response.Write(timer.ElapsedMilliseconds);

Bien que correct et techniquement applicable à d’autres cas d’utilisation, ce post m’a paru étrange.

Il m’a fait réagir car il montre bien une des problématiques que nous rencontrons tout les jours en tant que Développeurs SharePoint lorsque nous devons proposer des solutions techniques. A savoir, le besoin de bien connaitre l’ensemble du framework .Net mais surtout de maitriser le framework SharePoint pour proposer la solution appropriée à nos client sans avoir à redévelopper un composant existant ou moins performant.

Dans le cas qui nous intéresse, je pense notamment à une autre façon de mesurer le temps d’exécution de nos composants : SPMonitoredScope

Son usage est très simple car il se base sur l’utilisation du Developper Dashboard :

image

Ce Developper Dashboard fournit diverses informations destinées au développeur :

  • Thread execution time
  • Number, duration, call stack information and query text of each SQL Server query generated by the page
  • Number, duration, and call stack information of each WCF call
  • URL or timer job name
  • Current user
  • Execution start time

Plus d’infos à ce sujet sur http://msdn.microsoft.com/en-us/library/ff512745.aspx

Vous pouvez l’activer de diverses manières : STSADM, Powershell ou par code.

   1:  Stsadm –o setproperty –pn developer-dashboard –pv ondemand (or “on” or “off”)
   2:   
   3:  $devDashboard = [Microsoft.SharePoint.Administration.SPWebService]::ContentService.DeveloperDashboardSettings;
   4:  $devDashboard.DisplayLevel = 'OnDemand';
   5:  $devDashboard.TraceEnabled = $true;
   6:  $devDashboard.Update() 
   7:   
   8:  SPWebService cs = SPWebService.ContentService;
   9:  cs.DeveloperDashboardSettings.DisplayLevel = SPDeveloperDashboardLevel.On;
  10:  cs.DeveloperDashboardSettings.Update();
  11:   

Pour revenir au sujet, en combinant SPMonitoredScope & le Developper Dashboard, il nous est possible de rajouter nos propres bouts de code dans le Developper Dashboard :

   1:  using (new SPMonitoredScope("OnLoad (GetSupplierInformationWP)"))
   2:  {
   3:   
   4:      using (new SPMonitoredScope("Construction de la requete CAML (GetSupplierInformationWP)"))
   5:      {
   6:          #region Construction de la requete CAML
   7:          …;
   8:          #endregion
   9:      }
  10:   
  11:      using (new SPMonitoredScope("Affichage des données (GetSupplierInformationWP)"))
  12:      {
  13:          #region Affichage des données
  14:          …;
  15:          #endregion
  16:      }
  17:   
  18:      using (new SPMonitoredScope("CleanUp & Dispose (GetSupplierInformationWP)"))
  19:      {
  20:          #region CleanUp & Dispose
  21:          …;
  22:          #endregion
  23:      }
  24:  }

Ce qui nous donne :

image

Ca peut s’avérer pratique pendant les phases de debug sur certains composants “poilus”.

<Philippe/>

Publié mardi 3 mai 2011 09:20 par phil
Classé sous , ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: SharePoint 2010 : Mesurer le temps d'exécution de votre code @ mardi 3 mai 2011 11:50

Extrêmement pratique à plus d'un point

En complément, je conseille la lecture de la suite de post de Tobias Zimmergreen comme celui sur l'ajout de plug au Dashboard pour aider

http://www.zimmergren.net/archive/2010/12/18/sp-2010-developing-for-performance-part-1-developer-dashboard.aspx

themit

About phil

Philippe Sentenac est Consultant SharePoint à Wygwam en région Parisienne. Il intervient essentiellement sur des missions liées à SharePoint (2007 et 2010 ) mais aussi autour du Web 2.0. Plus généralement, il s'intéresse à l'ASP.Net (MVC) , à Silverlight, et à tout ce qui est orienté Web en rapport avec les nouvelles technologies, qu'il pratique depuis 2006. Féru de développement, il est passionné par les problématiques de méthodologies et d'industrialisation du développement.

Les 10 derniers blogs postés

- Conf’SharePoint : 10 bonnes raisons pour ne pas la rater par Le petit blog de Pierre / Pierre's little blog le 05-14-2013, 02:24

- [Event] Soirée de lancement Agile .NET France à Lyon par Blog Agile/ALM de Vincent THAVONEKHAM le 05-13-2013, 01:29

- .NET / Debug : inspection de la mémoire d'applications .NET (dump ou processus live) : première livraison d'une librairie .NET par Microsoft par CoqBlog le 05-11-2013, 22:21

- SharePoint : Incompatibilité avec Internet Explorer 10 (IE10) par Blog Technique de Romelard Fabrice le 05-08-2013, 16:29

- AutoSPInstaller pour SharePoint 2013 maintenant disponible en “RTM” par Julien Chable le 05-06-2013, 23:30

- [TFS2010] A la recherche du Shelveset perdu par Blog de Jérémy Jeanson le 05-03-2013, 21:46

- .NET / Debug post-mortem : obtenir le fichier mscordacwks.dll correspondant à un dump quand on n'a plus d'accès direct à ce fichier par CoqBlog le 04-28-2013, 19:57

- [W8] Afficher un graphe par CPU dans le gestionnaire des tâches par Blog de Jérémy Jeanson le 04-28-2013, 17:48

- [WCF] Limiter proprement l’accès à vos ressources serveur par Blog de Jérémy Jeanson le 04-26-2013, 22:59

- Event : Je serai speaker à la Conf’SharePoint par Blog Technique de Romelard Fabrice le 04-26-2013, 12:00