IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Comment trouver le temps d'exécution d'un code?


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Par défaut Comment trouver le temps d'exécution d'un code?
    Bonjour à tous,
    j'ai 2 fonctions (VB.net) qui effectuent la même opération. Je dois choisir la plus rapide des deux. Avec quelle methode je peux calculer le temps d'exécution de chacune des deux fonctions pour savoir la plus rapide?
    Merci d'avance pour toute réponse.
    Maren

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Avec un profiler : CLR profiler ou JetBrains dotTrace par exemple
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    S'il s'agit juste de déterminer le temps d'exécution d'une fonction, tu peux aussi faire ça manuellement.

    Tu fais un "DateTime start = DateTime.Now", en début de fonction, la même chose avec une variable "end" en fin de fonction et tu fais une différence en millisecondes.

    Il vaut mieux exécuter le test 4 ou 5 fois de suite afin d'être sûr que le résultat n'est pas faussé par des temps de chargement ou de mise en cache.

  4. #4
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par Keihilin Voir le message
    S'il s'agit juste de déterminer le temps d'exécution d'une fonction, tu peux aussi faire ça manuellement.

    Tu fais un "DateTime start = DateTime.Now", en début de fonction, la même chose avec une variable "end" en fin de fonction et tu fais une différence en millisecondes.

    Il vaut mieux exécuter le test 4 ou 5 fois de suite afin d'être sûr que le résultat n'est pas faussé par des temps de chargement ou de mise en cache.
    Pourquoi ne pas utiliser le timer special pour calculer le temps d'exécution du code en vb.net 2005 ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim Stopwatch As System.Diagnostics.Stopwatch
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    +1 pour le Stopwatch

    utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    dim chrono as new system.Diagnostics.Stopwatch
     
    chrono.start
     
    ' traitement
     
    chrono.stop
     
    dim temps as integer = chrono.elapsedmillisecondes
     
    chrono.reset

    tester plusieurs fois de suite (avec un bouton qui déclenche le traitement par exemple)
    car le temps de compilation peut faire varier le temps de beaucoup
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    +1 pour le Stopwatch
    sauf qu'on ne sait pas si il est en 2.0 ou en 1.1...

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    ah oui ... je n'ai pas connu le 1.1 donc je ne sais pas ce qu'il y avait pas à l'époque
    mais je commence à croire qu'il n'y avait pas grand chose
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    ah oui ... je n'ai pas connu le 1.1 donc je ne sais pas ce qu'il y avait pas à l'époque
    mais je commence à croire qu'il n'y avait pas grand chose
    Comme tu en parles, on dirait une technologie vieille de 10 ans .

    En entreprise, le 1.1 représente encore une assez forte proportion, pour ne pas dire une majorité.

    L'absence de "gadget" comme le StopWatch n'en font pas un framework avec "pas grand chose" .

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    certes pour le stopwatch, mais apparement la liste est beaucoup plus longue que ca, j'ai vu recement sur le forum que le datagridview non plus n'existe pas
    le bouble buffring aussi
    donc y doit y en avoir quand meme ...
    et pi moi je suis passé de vb 6 à 2005 ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 117
    Par défaut
    il y a aussi TickCount. je fais comme ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    deb = Environment.TickCount
    'portion du code a chronometrer
    '...
    fin = Environment.TickCount
     
    Me.Label1.Text = (fin - deb).ToString
    mais c'est peut-etre pas ce qu'il y a de plus propre
    il faut peut etre ajouter : Imports System.Threading

  11. #11
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par john stedd Voir le message
    il faut peut etre ajouter : Imports System.Threading
    les imports ne servent qu'à faciliter l'écriture du code, rien d'autre ... (certains n'en mettent aucun)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Enfin il y a plein de solutions à son problème... On voudrait bien savoir si Renma2 à réussi à résoudre son problème ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Par défaut
    Bonjour à tous et merci pour toutes vos propositions. J'ai chopé une grippe après mon posting.
    Toutes vos propositions m'ont été très utiles. Comme je voulais juste pouvoir choisir le code le plus rapide, j'ai utilisé la syntaxe (System.Diagnostics.Stopwatch) proposée par "Aspic" dont l'utilisation a été détaillée par "sperot51". Sinon, j'ai aussi testé les autres méthodes qui marchent aussi.
    Je n'ai rien compris de la proposition de "SaumonAgile" (CLR profiler ou JetBrains dotTrace par exemple...), car je suis une débutante.

    Merci à tous.

    Maren

  14. #14
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par Renma2 Voir le message
    Bonjour à tous et merci pour toutes vos propositions. J'ai chopé une grippe après mon posting.
    Toutes vos propositions m'ont été très utiles. Comme je voulais juste pouvoir choisir le code le plus rapide, j'ai utilisé la syntaxe (System.Diagnostics.Stopwatch) proposée par "Aspic" dont l'utilisation a été détaillée par "sperot51". Sinon, j'ai aussi testé les autres méthodes qui marchent aussi.
    Je n'ai rien compris de la proposition de "SaumonAgile" (CLR profiler ou JetBrains dotTrace par exemple...), car je suis une débutante.

    Merci à tous.

    Maren
    La méthode de SaumonAgile est assez complexe à comprendre pour les débutants (même moi je ne la connais pas). Mais oui c'est la meilleur méthode que tu as choisie et la plus simple en .net 2005
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  15. #15
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    clr profiler sert plutot à voir les allocations mémoire dans le temps, il est plutot complexe au premier abord
    en tout cas inadapté à la situation
    l'autre je connais pas ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment réduire le temps d'exécution sous Windows?
    Par jlg_47 dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 21/03/2010, 22h58
  2. Réponses: 7
    Dernier message: 03/04/2008, 10h40
  3. Réponses: 5
    Dernier message: 07/04/2007, 01h49
  4. Réponses: 2
    Dernier message: 04/04/2006, 11h46
  5. Réponses: 6
    Dernier message: 22/09/2005, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo