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 boucle


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Points : 46
    Points
    46
    Par défaut Temps d'execution d'une boucle
    Bonjour,
    Je cherche de l'aide pour calculer le temps d'exécution de la boucle
    suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include<stdio.h>
    #define Maxit 100000000
     
     main()
    {
        long i;
    double x;
    double y;
     
    	x=1;
    	y=1.000001;
     
     for (i=1; i<= Maxit; i++)
    	x=x*y;
      	printf("x:% .14E\n",x);
     
     return(0);
     }

  2. #2
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Points : 460
    Points
    460
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #include<stdio.h>
    #include<stdlib.h>
    #include<windows.h>
    #define Maxit 100000000
     
    int main(void)
    {
     
        // On récupère la valeur de GetTickCount car elle ne vaut pas 0 par defaut.
        float init_time = GetTickCount();
     
        long i;
        double x;
        double y;
     
        x=1;
        y=1.000001;
     
        for (i=1; i<= Maxit; i++)
    	    {
                  x=x*y;
      	          printf("x:% .14E\n",x);
            }
     
        //Une fois que le boucle est terminée, on récupére la valeur de gattickcount
        //à laquelle on soustrait sa valeur initiale pour avoir la référence à 0
        //On divise se résultat par 1000 pour obtenir le résultat en seconde
        //car cette fonction renvoit des milliseconde
        float time = (GetTickCount()-init_time)/1000;
     
        printf("\ntemps d'execution de la boucle : %f secondes\n\n", time);
        system("pause");
     
     }
    Et juste au passage, il existe des timers bien plus précis que cette fonction. Je ne connais pas le nom mais ça existe et maintenant tu le sais. Donc si un jour, tu dois mesurer des temps d'exécution très faible, cette fonction est à proscrire. L'itération semble dans ton cas suffisamment longue pour rendre valable le temps mesuré.

    Si jamais tu veux un résultat autre qu'en seconde, à toi de faire la fonction qui prendra en paramètre le resultat de gettickcount en ms et te retournera des heures des minutes et des secondes.

    Voilà, j'espère avoir éclairé ta lanterne.

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    GetTickCount() est plutôt une fonction Microsoft qui offre une précision de la milli seconde (je ne sais pas ton environnement de développement).

    Sinon, dans la , il y a truc qui devrait être bien : Comment chronométrer des temps d'exécution ?

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Points : 46
    Points
    46
    Par défaut Temps d'execution d'une boucle
    En utilisant la fonction "GetTickCount()" j'ai obtenu un temps d'exécution de 0.65 sec pour 100000000 d'itérations, contrairement a "clock_t start, end",qui affiche 1.70 sec, bizarre nom ?
    J'ai testé le code avec deux compilateurs Borland C/C++ 4.5 et Vc++ 5.0
    sous windows Xp sp3 , Processeur dual core 4300@1.80Mhz.
    Ce code est en fait un Benchmark utilisé par Bob ZALE pour montrer
    les performances de son compilateur, en l'occurrence PowerBasic 4 en mode
    console, qui donne un résultat de 0.28 sec!!!
    Mais cela est une autre histoire,
    Merci a tous

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    tu peux essayer avec la fonction que j'ai mise dans les sources C

    http://c.developpez.com/sources/?pag...DATE_get_clock


    Même usage que clock ..

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