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 :

chronometrer en langage C avec ubuntu


Sujet :

C

  1. #1
    Invité
    Invité(e)
    Par défaut chronometrer en langage C avec ubuntu
    hello world...!
    bon, voilà:
    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
    #include <stdio.h>
    #include<time.h>
    #include<stdlib.h>
     
      main()
     {
       time_t debut, fin ;
       double chrono;
     
       debut=clock();
       ....... //mes instructions à executer
       ...    // mes instructions
       ..
       fin=clock();
       chrono=((double)fin-debut)/CLOCKS_PER_SEC;
       printf("%lf", chrono);
     }
    je suis sous linux et quand j'affiche la valeur de "chrono" ça me met "zero"
    alors que ya aucun probleme à la compilation!

    Aidez moi les amis merci
    Dernière modification par diogene ; 12/02/2011 à 09h33. Motif: Utilisez les balises [CODE]...[/CODE] (bouton # de l'éditeur de messages)

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Bonsoir,

    D'abord, clock() utilise le type clock_t et pas time_t.

    Ensuite, clock() comptabilise le temps CPU consommé par le processus. Si celui-ci passe sa vie en sommeil, que ce soit à attendre un événement extérieur ou par le truchement de sleep(), le compteur ne tourne pas et tu finis par ressortir en n'ayant rien consommé.

    Si tu fais une attente active du style « for (x=1000000000;x;x--); », là, tu vas commencer à avoir des résultats.

  3. #3
    Invité
    Invité(e)
    Par défaut
    ok cool mais je trouve ça bizare... ton explication est correcte et très correcte meme! par ailleurs, la présence de time_t au lieu de clock_t dans mon message précédent est une erreur mais dans le code du projet elle n'y est pas... merci pour la remarque!
    si je comprend bien: lorsqu'on attend une information avec scanf, le processeur est inactif ??? si c'est vrai, alors je comprend =D...

    merci de me repondre!

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 81
    Par défaut
    Citation Envoyé par logarithme-galiléen Voir le message
    si je comprend bien: lorsqu'on attend une information avec scanf, le processeur est inactif ???
    C'est ton processus qui est en sommeil. Le processeur, lui, est actif.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Citation Envoyé par logarithme-galiléen Voir le message
    si je comprend bien: lorsqu'on attend une information avec scanf, le processeur est inactif ??? si c'est vrai, alors je comprend =D...
    Citation Envoyé par sam1507 Voir le message
    C'est ton processus qui est en sommeil. Le processeur, lui, est actif.
    … plus précisément, ton système d'exploitation comptabilise le temps accordé à chaque processus. C'est que que tu vois avec la commande « top », par exemple. Le principe des systèmes multitâches préemptifs est d'accorder un certain « temps de parole » à chaque processus avant de passer au suivant.

    Seulement, si le processus est en attente de quelque chose (ce qui est pour ainsi dire toujours le cas) de la part du système ou autre, celui-ci le sait et peut immédiatement passer au processus suivant. Dans le cas d'un sleep, le système sait même exactement à quel moment il devra lui rendre la main.

  6. #6
    Invité
    Invité(e)
    Par défaut
    merci c'est cool... tes explications sont très claires particulierement!
    on est ensemble...

  7. #7
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    si tu vas dans la rubrique Sources, j'y ai déposé une routine (sous la rubrique Gestion du temps) équivalente à clock mais permettant de mesurer le temps abolu passé, et avec une précision de la microseconde....

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

Discussions similaires

  1. [langage] problème avec fonction read
    Par domidum54 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2004, 20h42
  2. [langage] pb avec use strict ;
    Par la bille dans le forum Langage
    Réponses: 5
    Dernier message: 22/12/2003, 16h44
  3. [langage] Pb avec Active perl :s
    Par Cetras dans le forum Langage
    Réponses: 2
    Dernier message: 02/09/2003, 13h28
  4. [langage] probleme avec un hash de hash
    Par planetevoyage dans le forum Langage
    Réponses: 4
    Dernier message: 06/06/2003, 12h55

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