none
Temps d'exécution d'une fonction RRS feed

Toutes les réponses

  • La Team version a des fonctions de profiling. Regarde par exemple ici (http://blogs.msdn.com/ianhu/archive/2005/03/08/389849.aspx

    )

    Il existe aussi d'autres outils:

    http://www.codeguru.com/forum/archive/index.php/t-369747.html

     

    Mais si tu veux faire quelque chose d'assez simple (pendant tes phases de test). Tu peux par exemple utiliser DateTime.Now au début de ta fonction et le stocker puis faire la différence à la fin de ta fonction et ainsi obtenir le temps passé (avec un petit console.writeline pour l'afficher)!

     

    Bon profiling

    lundi 21 avril 2008 13:45
  • Bonjour,

     

    Je rajouterais en plus de la 3ème solution proposée par Radric, l'utilisation de la classe :

    System.Diagnostics.Stopwatch qui est beaucoup plus précis par rapport à un TimeSpan calculé avec une différence de DateTime...

     

    Cordialement

     

    lundi 21 avril 2008 19:16
    Modérateur
  • Bonjour,

    Excusez moi, mais je ne comprend pas comment je vais utiliser "System.Diagnostics.Stopwatch" pour avoir le temps d'exécution de ma fonction?

    Merci

    mardi 22 avril 2008 14:13
  • Ben au début de ta fonction tu mets ça:

     

    Code Snippet

    System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();

    sw.Reset();

    sw.Start();

     

     

    et à la fin de ta fonction tu mets ça:

     

    Code Snippet

    sw.Stop();

    Console.WriteLine(sw.Elapsed.ToString);

     

     

    et le tour est joué.

     

    le reset est je pense inutile mais j'ai préféré le mettre par précaution et puis comme c'est du code temporaire ce n'est pas très important.

    mardi 22 avril 2008 14:47
  • Bonjour,

     

    Quand vous parlez de temps d'exécution d'une fonction , voulez-vous parler de :

    - du temps processeur  ?

    au démarrage du programme :

    public Process Proc = Process.GetCurrentProcess(); 

    à l'entrée de la  fonction :

    Int32 begintime = Proc.TotalProcessorTime.Milliseconds;

    .... your code

    ... à la sortie de la fonction :

    Int32 endtime = Proc.TotalProcessorTime.Milliseconds;

    Int32 delta = endtime - begintime;

    dans delta, vous récupérez le temps d'utilisation du(es) processeur(s) pour l'execution de la fonction en millisecondes

     

    - du temps ( voir sa montre ) qui s'est écoulé pendant l'execution de la fonction ( qui comprend le temps précédent +

    tout le temps utilisé par les autres processus en gros )?.Si la fonction est seule à utiliser les processeurs, ces 2 temps sont identiques ( à quelques % près )

    à l'entrée de la fonction :

    DateTime begindt = DateTime.Now;

    à la sortie de la fonction :

    DateTime enddt = DateTime.Now;

    TimeSpan ts = enddt - begindt;

    Int32 delta = ts.Milliseconds;

    dans delta , vous récupérez le temps ( chronomètre ) en millisecondes

     

    Bonne journée

    mardi 22 avril 2008 15:43