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 :

Le temps en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut Le temps en C
    Salut,
    Je souhaiterai faire appel a certaines fonctions dans un intervalle de temps régulier (ex: un printf toutes les demi secondes).

    Existe t-il une fonction permettant de mesurer le temps en C? Cela pourrait aussi me permetre de calculer le temps necessaire a l'execution de mes fonction et ainsi de comparer leur efficasité...

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    voir les fonctions time, clock, gettimeofday

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Le temps en C
    Citation Envoyé par vinzzzz
    Je souhaiterai faire appel a certaines fonctions dans un intervalle de temps régulier (ex: un printf toutes les demi secondes).
    La résolution garantie par le C est de 1 seconde (time()). Il existe des extensions non standards qui vont plus loin (gettimeofday(), par exemple)
    Existe t-il une fonction permettant de mesurer le temps en C? Cela pourrait aussi me permetre de calculer le temps necessaire a l'execution de mes fonction et ainsi de comparer leur efficasité...
    Ca, c'est un autre problème. clock() est fait pour çà. Mais la résolution n'est pas forcément très bonne. Il peut être utile de multiplier les itérations pour augmenter la précision, mais attention, avec les caches programmes, le résultat n'est pas forcément significatif...

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    Donc pour par exemple faire appel a une mthode toutes les 0.005 secondes, il faudrait que j'utilise les fonctions non standards? Elles pouraient être suffisantes pour un délais aussi court?

    Pour clock(), il renvoi apparment le temps écoulé depuis le début du programme c'est bien ca? il suffirai donc de l'appeler avant et aprés l'apel d'une fonction ou d'un bloc d'instructuion pour voir la durée de celle ci?

  5. #5
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par vinzzzz
    Donc pour par exemple faire appel a une mthode toutes les 0.005 secondes, il faudrait que j'utilise les fonctions non standards? Elles pouraient être suffisantes pour un délais aussi court?
    Il n'y a pas de méthode en C seulement des fonctions.
    gettimeofday te renvoi juste l'heure à cet instant.

    Pour appeler une fonction toutes les 5ms tu peux eventuellement utliser nanosleep
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    repeter à l'infini
        dormir 5ms via nanosleep
        faire fonction
    fin repeter
    Pour clock(), il renvoi apparment le temps écoulé depuis le début du programme c'est bien ca? il suffirai donc de l'appeler avant et aprés l'apel d'une fonction ou d'un bloc d'instructuion pour voir la durée de celle ci?
    Il renvoi plus precisement une approximation de la durée écoulée d'utilisation du processeur.
    Donc oui avant, apres et une soustraction.

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    oui désolé pour méthode a la place de fonction je ne suis pas encore habitué au C...

    merci de vos réponse en tout cas

  7. #7
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Fait attention avec l'utilisation de clock dans un environnement multithread, tu pourrai avoir des surprises, sur un quadri-processeur, j'ai vu des trucs très aléatoires.

    Il faudrait que tu regarde du coté de la platteforme utilisée, il y a peut être des fonctions spécialisées.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Par défaut
    Pour appeler une fonction toutes les 5ms tu peux eventuellement utliser nanosleep
    Nanosleep c'est pas plutot pour les nanosecondes ? (10^-9 s)
    Dans le cas d'un laps de temps de 5 ms (soit 5 * 10^-3 s), se serait pas plus approprité d'utiliser un usleep ? (10^-6 s)
    Par exemple usleep(5000) qui donne bien nos 5 ms ?

    (corriger moi si je me trompe )

  9. #9
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Ce n'est pas une correction, mais est ce que toutes ces fonctions sont standard au C, voire même POSIX ?

  10. #10
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    printf toutes les demi secondes
    Suivant ce que tu as à afficher, il peut arriver que le temps pour le faire soit plus élevé qu'une demi seconde.

  11. #11
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par PRomu@ld
    Ce n'est pas une correction, mais est ce que toutes ces fonctions sont standard au C, voire même POSIX ?
    usleep: BSD 4.3

    nanosleep: POSIX.1b (anciennement POSIX.4).

  12. #12
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    Citation Envoyé par PRomu@ld
    Suivant ce que tu as à afficher, il peut arriver que le temps pour le faire soit plus élevé qu'une demi seconde.
    Oui ce n'est pas un affichage que j'aurai a faire c'était simplement a titre d'exemple, mais plutot le parcours d'un trés gros tableau et pas mal d'opérations sur chacun des éléments du tableau, et ce toutes les 0.05s... j'esper que ca sera possible

    Autre chose, vous parlez de fonctions standards/non standard en C. Si une fonction est non standard ca a quelle conséquence? Et ya t il une documentation générale pour ce language, un peu comme celle disponible pour JAVA?

    En tout cas merci de votre aide je vais examiner chacune des fonctions que vous m'avez proposé

  13. #13
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par vinzzzz
    Autre chose, vous parlez de fonctions standards/non standard en C. Si une fonction est non standard ca a quelle conséquence?
    On risque de ne pas la trouver sur une autre plateforme.

    http://emmanuel-delahaye.developpez....s.htm#standard
    Et ya t il une documentation générale pour ce language, un peu comme celle disponible pour JAVA?
    http://www-ccs.ucsd.edu/c/

  14. #14
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    merci beaucoup!

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

Discussions similaires

  1. gérer le clic gauche-droite en même temps de la sou
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2002, 22h52
  2. Arrêter un prog si temps de connexion trop long
    Par jakouz dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2002, 18h28
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. temps d'un mp3
    Par CorO dans le forum Langage
    Réponses: 6
    Dernier message: 15/09/2002, 18h43
  5. repertoire temp dynamique
    Par killpilot dans le forum C
    Réponses: 2
    Dernier message: 26/04/2002, 16h19

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