Net 2.0 : StopWatch, ou le temps qui passeDate de publication : 30/01/2006 Par Ronald VASSEUR (autres articles)
Lorsque vous réalisez des applications, vous avez souvent plusieurs
voies possibles pour effectuer une opération, au-delà des aspects
de sécurité et de fiabilité, l'aspect de la performance est à prendre
en compte. La manière la plus évidente de mesurer la performance de
votre code est en fait de regarder son temps d'exécution...
Introduction 1. Présentation de la classe StopWatch 1.1. Les méthodes 1.2. Les propriétés 2. Mesurer le temps d'exécution d'une méthode 3. Mesurer le temps d'exécution cumulé de plusieurs méthodes 4. Une mini application exemple Conclusion C. Ressources Introduction
Avant le
Framework .Net en version 2.0, il pouvait être assez compliqué de
mesurer précisément un temps d'exécution avec .Net, tout ceci est
désormais terminé, en effet, une nouvelle classe StopWatch propose
de nous rendre ce service avec une précision remarquable,
de l'ordre de la microseconde (0.000001 seconde). Voyons de plus
près et sans plus tarder cette classe.
![]() .Net 2.0 1. Présentation de la classe StopWatch
Le Framework .Net 2.0, dans sa multitude de nouvelles classes, nous
apporte ce que l'on pourrait considérer comme une petite classe,
mais il faut bien le reconnaître d'une très grande utilité pour
les développeurs que nous sommes. La classe StopWatch, c'est son
nom, faisant partie du namespace System.Diagnostics, nous offre
des méthodes permettant de mesurer très précisément (de l'ordre
de la microseconde) le temps d'exécution de notre code, et cela
sans effort aucun, je serai tenté de dire trivialement "plus
simple que cela tu meurs". Voici les méthodes et les propriétés
principales que vous devez connaître :
1.1. Les méthodes
1.2. Les propriétés
Après avoir vu les méthodes et propriétés principales de StopWatch, étudions un petit exemple nous permettant de mesurer le temps d'exécution d'une méthode toute simple… 2. Mesurer le temps d'exécution d'une méthode
Voici un exemple simple qui montre comment mesurer le temps d'exécution
d'une méthode, pour cela il va nous falloir utiliser une instance de
StopWatch, ses deux méthodes Start() et Stop() et sa propriété
ElapsedMilliseconds qui va nous donner un résultat en millisecondes,
choix qui est ici pertinent, puisque le résultat attendu sera de
quelques millisecondes. Si vous souhaitiez mesurer des temps
d'exécution plus longs pour des raisons concrètes de lisibilité
il serait peut être plus judicieux d'utiliser par exemple la
propriété Elapsed qui vous fournit un TimeSpan, et non pas un
entier (Long) comme ElapsedMillisecondes.
Voici les deux fonctions dont le temps d'exécution va être mesuré par StopWatch, j'ai volontairement choisi des exemples simplistes, le but étant içi de démontrer comment mesurer un temps d'exécution facilement.
Voici maintenant le code du bouton permettant d'instancier l'objet StopWatch,
puis d'effectuer la mesure du temps d'exécution, ici je déclenche le chrono
juste avant l'appel de la fonction, et l'arrête immédiatement après qu'elle soit
terminée.
3. Mesurer le temps d'exécution cumulé de plusieurs méthodes
Il est possible de mesurer l'exécution cumulée de plusieurs méthodes,
pour cela il suffit simplement d'arrêter le "chronomètre" puis de
le relancer pour la méthode suivante, sans bien entendu le réinitialiser
entre temps. Vous pouvez ainsi réaliser des mesures de manière aisée
et souple, et même si cela peut apparaître "gadget" au premier
abord, à l'usage cela devient un outil 'inutile' donc totalement indispensable ! :)
4. Une mini application exemple
Pour illustrer tout cela et avoir un exemple fonctionnel, j'ai réalisé
une mini-application qui permet de mesurer le temps d'exécution de
méthodes, dans différentes configurations comme nous l'avons vu au
long de cet article. Vous verrez qu'il n'y à rien de d'extraordinaire
dans ce programme, juste de quoi démontrer le principe de base.
Voici une capture d'écran de cette mini-application :
![]() Application exemple.
Comme vous le voyez cette application permet de comparer le temps
pris par une concaténation de 20000 caractères, et cela avec une
String classique, et avec un StringBuilder, qui vous vous en doutez
déjà sera bien plus performant.
L'exécutable ainsi que les sources (Solution Visual Studio 2005) de cette mini-application sont disponibles en téléchargement dans la rubrique "Ressources" de cet article. Conclusion
Vous avez pu voir, par le biais de cet article, qu'il n'y à rien de
révolutionnaire, mais tout de même, cette classe StopWatch est
quand même une nouveauté très intéressante de la version 2.0 du
Framework .Net, en effet, lors de développement, on peut être amené
à vouloir estimer la performance de son code ou encore choisir
entre plusieurs possibilités. Avant pour mesurer un temps
d'exécution, il fallait soit créer soit même, soit utiliser
le peu de solutions existantes dans le Framework, qui de plus, étaient trop
imprécises et rigides. N'oubliez pas qu'ici la précision
est de l'ordre de la microseconde.
Cette petite classe trouvera donc tout un tas d'applications différentes,
celle qui me semble personnellement la plus intéressante est la mesure
du temps d'exécution de méthodes dans une optique d'évaluation des
performances, cependant je suis sûr que chacun d'entre vous aura une
très bonne raison d'utiliser cette nouvelle classe. Merci d'avoir
pris le temps de lire tout ceci, et rendez-vous bientôt pour un nouvel
article.
C. Ressources
|
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Ronald Vasseur. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Cette page est déposée.
Copyright © 2000-2012 - www.developpez.com