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 :

clock() vaut toujours 0


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 42
    Par défaut clock() vaut toujours 0
    Boujour,

    J'écrit une application qui requiert l'instruction clock() (ou une autre fonction capable de me fournir un horodatage avec une précision de l'ordre d'une dizaine/vingtaine de millisecondes).

    Le code de mon application est portable mais j'ai un problème sous linux :

    Sous Windows XP, clock() me renvoie un horodatage en millisecondes,

    Sous Linux, clock() renvoie toujours 0 (j'ai testé sur une debian etch, fedora je sais plus combien mais récente, ubuntu feisty, et aussi une gentoo dont je ne connait pas le contenu du noyau).

    Voici le code (bateau) que je teste sur chaque distrib qui me passe sous la main :

    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 <sys/types.h>
    #include <time.h>
    #include <unistd.h>
    #include <stdio.h>
     
    int main(int argc, char ** argv)
    {
       unsigned long av = clock(), ap; 
       printf("Avant : %d\n",av);
       usleep(500000);
       ap = clock(); 
       printf("Apres : %d\n",ap);
       printf("Durée : %d\n",ap - av);
     
       return 0;
    }
    J'obtiens donc le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Avant : 0
    Apres : 0
    Durée : 0
    Je précise que le usleep(500000) attend bien environ 500ms. C'est très perceptible lors de l'exécution du programme.

    Si quelqu'un voit une erreur ou connait une alternative au problème, et bien ça m'interesse

    PS : Je ne veux pas utiliser l'instruction rdtsc des x86 car sur les ordinateurs portables, je ne peux pas définir un nombre de front montants d'horloge pour une durée en raison de la fréquence ajustable de leurs processeurs.

  2. #2
    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
    Primo, la fonction clock ne s'utilise pas comme ça, et n'st pas de ce type :

    http://man.developpez.com/man3/clock.3.php

    D'autre part, elle mesure le temps CPU utilisé...

    Vu que tu fais un sleep, ça donnera 0 de toutes façons...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 42
    Par défaut
    Ah tiens ... je ne pensais pas que le clock() après le sleep n'augmentais pas (enfin pas sous linux). Comme quoi, avec de la doc en français, les subtilités apparaissent.

    je vais me pencher sur la fonction times indiquée dans la man page.

    Merci.

Discussions similaires

  1. [PDO] fetchAll() toujours vaut 0
    Par owenho dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/01/2014, 22h00
  2. [connexion][CVS] Toujours mon probleme de connexion
    Par Gromitou dans le forum JBuilder
    Réponses: 11
    Dernier message: 07/11/2003, 18h41
  3. [Kylix] Le son ! toujours le son :lol:
    Par JlouisI dans le forum EDI
    Réponses: 1
    Dernier message: 29/04/2003, 01h24
  4. Que vaut DirectX 9 ?
    Par LKT dans le forum DirectX
    Réponses: 3
    Dernier message: 07/02/2003, 08h25
  5. Toujours un problème de rafraichissement de DBGrid
    Par tripper.dim dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/12/2002, 13h15

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