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

C++ Discussion :

temps d'execution d'une portion de programme????


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 29
    Par défaut temps d'execution d'une portion de programme????
    slt tlm:
    je veux calculer le temps d'execution d'une portion de programme, pour cela j'ai utilsé la fonction : clock()
    ////////////////////////////
    clock_t t1,t2,t3;

    t1=clock();
    //ma portion
    .
    .
    //
    t2=clock();
    t3=t2-t1;
    /////////////////////////
    1) est ce que c'est juste???
    2) comment puis je convertir par la suite le résultat en milli-secondes ou en secondes et le mettre dans un float ou dans un string???

  2. #2
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut Re: temps d'execution d'une portion de programme????
    Citation Envoyé par othland
    1) est ce que c'est juste???
    Ce forum est là pour aider les personnes rencontrant des problèmes, pas pour tester le code des gens.
    2) comment puis je convertir par la suite le résultat en milli-secondes ou en secondes et le mettre dans un float ou dans un string???
    FAQ

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 29
    Par défaut
    1) j'ai pas demandé qu'on teste la partie!!!!
    2)j'ai cherché dans la FAQ, j'ai rien trouvé sur clock()!!!! sauf si ça m'a échapé!!!

  4. #4
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    Citation Envoyé par othland
    1) j'ai pas demandé qu'on teste la partie!!!!
    2)j'ai cherché dans la FAQ, j'ai rien trouvé sur clock()!!!! sauf si ça m'a échapé!!!
    Déjà, c'est du C.

    Et là, je n'utilise pas clock() mais time(NULL) qui te renvoi le nombre de secondes écoulés depuis 1970.

    en gros:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    time_t tBegin = time(NULL);
    [ton_code]
    time_t tElapsed = time(NULL) - tBegin;
    Pour convertir en string:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    std::ostringstream oss;
    oss << tElapsed;
    oss.str() // <-- renvoi un std::string

  5. #5
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    Clock est plus précis, puisqu'il renvoi des unités d'horloge. Par contre suivant l'implémentation il ne fonctionne peut être pas toujours pareil...

    Pour faire ta conversion tu peux utiliser la constante: CLOCKS_PER_SEC, qui te donne le nombre des ces unités par seconde.

    Attention:
    Le standard C autorise une valeur quelconque d'horloge au début du programme, il faut donc utiliser la différence entre la valeur actuelle et celle de clock() au lancement du programme pour obtenir une portabilité maximale.

    Notez que la valeur peut revenir à zéro. Sur un système 32 bits, lorsque CKS_PER_SEC vaut 1000000, cette fonction redonnera les mêmes valeurs toutes les 72 minutes environ.
    Autrement ça me parait juste ton code.

  6. #6
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 29
    Par défaut
    problème:
    ma portion est tellemnt petite qu'il m'affiche 0.
    puisque la division par CLOCKS_PER_SEC donne un résultat en seconde, y a pas d'autre moyen pour l'avoir en milli-secondes????
    je veux pas un 0 comme résultat!!!!!!

  7. #7
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    En général, pour faire du timing, on exécute plein de fois chaque fonction, afin de ne pas avoir un résultat faux parce que pile poil au moment de la mesure, on a reçu un mail qui est passé par anti-virus et fltre à spam.

    Si tu veux plus de précision, peut-être que des fonctinos spécifiques à ta plate-forme (par exemple queryPerformanceCounter sous windows) peuvent t'aider.

    Enfin, pour faire des analyses de perf, des programmes existent, qui t'évitent de devoir modifier ton code à plein d'endroit pour faire des mesures. On appelle ça des profilers. Il doit y avoir un truc nommé gpof sous linux, et sous windows, le dernier VC++ en fourni un dans certaines configurations (pas la version express), et des outils de Rationnal ou BoundsCheckers ont ce genre de fonctions.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  8. #8
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    puisque la division par CLOCKS_PER_SEC donne un résultat en seconde, y a pas d'autre moyen pour l'avoir en milli-secondes????
    (result)/(CLOCKS_PER_SEC/1000.0)

Discussions similaires

  1. [Stratégie] Mesurer le temps d'exécution d'une requête
    Par nice dans le forum Général Java
    Réponses: 5
    Dernier message: 29/01/2006, 17h53
  2. Récupérer le temps d'execution d'une methode
    Par Janitrix dans le forum Général Java
    Réponses: 3
    Dernier message: 17/12/2005, 11h01
  3. le temps d'execution d'une commende
    Par abdallahi dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/12/2005, 18h34
  4. Temps d'execution d'une requête
    Par Maglight dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/01/2005, 08h38
  5. [VB.NET] Temps d'éxécution d'une page...
    Par Webman dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/06/2004, 12h20

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