Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

C# - RÉCUPÉRATION DU TEMPS D'EXÉCUTION D'UNE FONCTION OU D'UNE ÉTAPE


Information sur la source

Catégorie :Date / Heure Source .NET ( DotNet ) Classé sous : temps, exécution, timer Niveau : Débutant Date de création : 17/01/2006 Vu : 12 351

Note :
7 / 10 - par 2 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


Description

Après avoir chercher comment faire, je me suis inspiré de différentes idées trouvées pour créer cette fonction extrèmement simple que vous pouvez adapter et intégrer dans vos projet suivant votre besoin.
 

Source

  • /// <summary>
  • /// Retourne le temps passé depuis le temps de départ transmis en paramètre
  • /// </summary>
  • /// <param name="TempsDeDepart">Instant de Départ</param>
  • /// <returns>Retourne le temps en textuel</returns>
  • private string renvoieTempsDexecution(DateTime TempsDeDepart)
  • {
  • TimeSpan TempTempsExec = (DateTime.Now - TempsDeDepart);
  • string TempRetour = string.Empty;
  • TempRetour += RetournePlurielouSingulier(TempTempsExec.Days, "jour", ", ") ;
  • TempRetour += RetournePlurielouSingulier(TempTempsExec.Hours, "heure", ", ");
  • TempRetour += RetournePlurielouSingulier(TempTempsExec.Minutes, "minute", ", ");
  • TempRetour += RetournePlurielouSingulier(TempTempsExec.Seconds, "seconde", ", ");
  • TempRetour += RetournePlurielouSingulier(TempTempsExec.Milliseconds, "milliSeconde", "");
  • return TempRetour;
  • }
  • /// <summary>
  • /// Retourne la chaine avec pluriel ou singulier, si nul, ne renvoie rien
  • /// </summary>
  • /// <param name="Valeur">Valeur à tester</param>
  • /// <param name="mot">Mot à accorder</param>
  • /// <param name="separateur">séparateur à ajouter</param>
  • /// <returns>Chaine avec accord</returns>
  • private string RetournePlurielouSingulier(int Valeur, string mot, string separateur)
  • {
  • string tempretour = string.Empty;
  • if (Valeur > 0)
  • {
  • if (Valeur == 1)
  • {
  • tempretour = Valeur.ToString() +" "+ mot + separateur;
  • }
  • else
  • {
  • tempretour = Valeur.ToString() +" "+ mot +"s" + separateur;
  • }
  • }
  • return tempretour;
  • }
  • // ----------------------------------------------------------------
  • // Pour son utilisation :
  • // Déclaration de la variable au départ de votre fonction
  • DateTime InstantDepart = DateTime.Now;
  • // ...... Votre Code
  • string Texte = "Durée d'exécution : "+ renvoieTempsDexecution(InstantDepart);
/// <summary>
/// Retourne le temps passé depuis le temps de départ transmis en paramètre
/// </summary>
/// <param name="TempsDeDepart">Instant de Départ</param>
/// <returns>Retourne le temps en textuel</returns>
private string renvoieTempsDexecution(DateTime TempsDeDepart)
{
	TimeSpan TempTempsExec = (DateTime.Now - TempsDeDepart);
	string TempRetour = string.Empty;

	TempRetour += RetournePlurielouSingulier(TempTempsExec.Days, "jour", ", ") ;
	TempRetour += RetournePlurielouSingulier(TempTempsExec.Hours, "heure", ", ");
	TempRetour += RetournePlurielouSingulier(TempTempsExec.Minutes, "minute", ", ");
	TempRetour += RetournePlurielouSingulier(TempTempsExec.Seconds, "seconde", ", ");
	TempRetour += RetournePlurielouSingulier(TempTempsExec.Milliseconds, "milliSeconde", "");

	return TempRetour;
}


/// <summary>
/// Retourne la chaine avec pluriel ou singulier, si nul, ne renvoie rien
/// </summary>
/// <param name="Valeur">Valeur à tester</param>
/// <param name="mot">Mot à accorder</param>
/// <param name="separateur">séparateur à ajouter</param>
/// <returns>Chaine avec accord</returns>
private string RetournePlurielouSingulier(int Valeur, string mot, string separateur)
{
	string tempretour = string.Empty;
	if (Valeur > 0)
	{
		if (Valeur == 1)
		{
			tempretour = Valeur.ToString() +" "+ mot + separateur;
		}
		else
		{
			tempretour = Valeur.ToString() +" "+ mot +"s" + separateur;
		}
	}
	return tempretour;
}

// ----------------------------------------------------------------
// Pour son utilisation :

// Déclaration de la variable au départ de votre fonction
DateTime InstantDepart = DateTime.Now;

// ...... Votre Code

string Texte = "Durée d'exécution : "+ renvoieTempsDexecution(InstantDepart);

Conclusion

Pour l'utiliser, il vous suffit alors d'afficher la variable de texte.

Bon Coding

Romelard Fabrice
 

Commentaires et avis

signaler à un administrateur
Commentaire de poppyto le 17/01/2006 19:25:41 administrateur CS

Malgré l'effort de commentaires, on n'utilise pas ta technique pour mesurer des performances car la résolution est trop importante (10ms)...On utilise des Timers "Multimedia", cf APIs QueryPerformanceCounter/QueryPerformanceFrequency ou alors System.Diagnostics.Stopwatch de .net 2.0

signaler à un administrateur
Commentaire de fabrice69 le 17/01/2006 20:21:25 administrateur CS

Que tu ne l'utilises pas, soit, mais cette méthode a l'avantage de fonctionner et est extrèmement simple à mettre en place.
Dans un cas d'exécution extrèmement rapide il y sans doute mieu.
Dans mon cas, les 10 Millisecondes me vont très bien.

Pour ce qui est de la version de .NET, je suis en 1.1 et non en 2.0 (comme encore beaucoup de gens).

Cordialement
Romelard Fabrice

signaler à un administrateur
Commentaire de poppyto le 17/01/2006 20:28:19 administrateur CS

Je te l'accorde, pour .net 1.1 il est plus simple de mettre en place ta méthode que d'utiliser les API. Mais pour le 2.0, il faut utiliser StopWatch !

...J'ai l'impression que ta source est plus faite pour mesurer des grosses performances minutes/heures/jours ? Dans ce cas là je suis ok même pour .net 2.0

signaler à un administrateur
Commentaire de Nikoui le 18/01/2006 10:08:22

Ton code pourrait tenir en 3 lignes, en utilisant string.Format();

(dans ce cas, c'est anectotique, mais ca coute cher en ressource (temps & mémoire) de faire maString = maString + autreChose, car a chaque fois, ca crée une nouvelle string en  mémoire avant de recopier dans la nouvelle (string est un type 'valeur'), donc à éviter pour manipuler les strings. Ne pas hésiter non plus à utiliser les StringBuilder pour manipuler les chaines)

signaler à un administrateur
Commentaire de bucherb le 18/01/2006 11:27:43

Je ne suis pas d'accord Nikoui. String n'est pas un ValueType mais un Object

signaler à un administrateur
Commentaire de Crazyht le 18/01/2006 12:08:13 administrateur CS

Et pourtant Nikiou à raison (presque) d'ou l'implementation de StringBuilder.

En effet 1àms ce n'est pas important surtout q'un fait elle sont ajouter apres le temps d'execution réel puisque la différence des 2 date est pris au debut de la méthode. Le fait de mettre des metrique rallentis forcement l'execution du programme.

Sinon bonne source F___

@++
Hervé

signaler à un administrateur
Commentaire de Nikoui le 18/01/2006 12:12:10

Tu as raison, je me suis mal exprimé. String n'est pas de type Value. Ce que je voulais dire, c'est que string est une chaîne immuable à longueur fixe, et que faire s1 = s2 ne modifie pas s1, mais créé une nouvelle string et l'affecte a s1 (ce qui prouve bien d'ailleur que string est une référence et pas une valeur ^^).

signaler à un administrateur
Commentaire de bucherb le 18/01/2006 14:44:43

Voilà, là c'est logique ;-) lol

signaler à un administrateur
Commentaire de fredatcs le 08/02/2009 16:49:53

Merci pour cette source
c'est ce que je cherchais depuis longtemps
en fait c'est tout simple
moi je fais des boucles de plusieurs jours et cela me sert énormément

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Temps d'exécution d'un programme [ par yassinchaouki ] Bonjour,est ce qu' il y a une fonction en C# qui calcule le temps d'ex&#233;cution d'un programme?merci d'avance.Cordialement. Temps processeur [ par T103 ] Bonsoir,Je voudrais recuperer le temps du processeur total, donc j'utilise un PerformanceCounter qeu voici :Je lai mi dans un timer mais mon label aff temps d'exécution [ par hadhber ] j'ai remarqué que l'exécution d'une application dotnet est lente pour la première fois . Qui peut me repondre pourquoi? Temps d'exécution d'1 aspx : comment le calculer ? [ par v1nce ] Bonjour,J'ai des probl&#232;me de perf dans l'ex&#233;cution de mes scripts aspx sans que je sache si cela vient des scripts ou d'un probl&#232;me r&# Timer Thread ??? [ par Globinours ] Voil&#224; mon probl&#232;me en fait j'ai une RichTextBox et j'effectue une op&#233;ration assez longue sur l'&#233;venement OnSelectionChanged. Ce q erreur sur ExecuteScalar(dbCommandWrapper); [ par lamiruth ] Bonjour &#224; tous!svp au moment de l'ex&#233;cution de &nbsp;instruction MyString =(int) database.ExecuteScalar(dbCommandWrapper);dans une page web, Impression matricielle [ par hoymille ] Bonjour,Je voulais savoir comment peut on imprimer une ligne de temps en temps sans que la feuille ne sorte avant qu'elle ne soit remplie?En fait, c'e Tester si un processus est en cours d'exécution [ par AnnihilatorSupernova ] Bonjour !J'aimerais savoir comment faire pour tester si un processus est en cours d'ex&#233;cution. Je sais qu'on peut les lister et chercher le proce faire un temporisateur [ par emna_bz ] Bonjour a tous Je veux arreter l'execution d'une page aspx pendant 1secondes ,j'ai essay&#233; d'utiliser timer mais j'ai pas pu trouver un bon result Openfiledialog qui plante... [ par Arthenius ] salut a tousvoila j'ai glisser deplace sur ma form un composant openfiledialogpuis sur un bouton je lance ca : try { openFileDialog1.Filter = "Tous l


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.