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

POSIX C Discussion :

comment mesurer les ticks processeur ( linux )


Sujet :

POSIX C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 19
    Points
    19
    Par défaut comment mesurer les ticks processeur ( linux )
    bonjour je suis en train de faire un programme style bench de cpu,
    je lui file un calcul d'exponentiels avec tres haute precision puis un calcul avec les differents exponentiels calculés , puis je verifie le resultat.
    mais j'ai un souci je mesure rarement le temps dans mes programme donc d'habitude j'utilise la fonction clock();
    mais le probleme c'est que si le systeme d'exploitation mais plusieurs fois en veille le programme quels que millisecondes clock() ne le voit pas du coups sur le meme pc , un coups ça met 17.5s et un coup ça met 18.8s.
    je voudrais donc mesurer les ticks processeur afin d'avoir une plus grande preçision mais aussi ne pas avoir d'erreur au niveau du temps par exemple comme le programme superpi.
    on le lance trois fois et on trouve par exemple :
    31.358s
    31.369s
    31.349s

    donc si vous connaissez une façon plus precise de mesurer le temps où si vous utilisez clocks d'une autre façon aidez moi , sil vous plais;

    je fais come ça
    float start_time=0f , end-time=0f;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    start-time=clock();
     
    //calcul
     
    end-time=clocks();
    voila comment faites vous , vous autres ?????

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Voir la fonction getrusage().
    Cordialement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  3. #3
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    • d'abord sur unixoide tu as la commande "time" :

      time prog <args>

      te sort directement le temps cpu utilisé et le temps utilisateur

    • Ensuite, tu peux compiler ton prog avec l'option -pg (je crois), qui va créer un exécutable qui fera du "profiling". Et dans le fichier produit au runtime, tu auras le temps passé (en %) dans chaque routine, et le nombre de fois où elle a été appelée.

    • enfin si tu souhaites mesurer précisément une partie de code, tu as soit clock() comme tu fais, soit une fonction qui mesure la différence en temps absolu (clock mesure par rapport au temps d'exécution du programme, c'est à dire quand il est "loadé") que j'avais fourni dans la page sources ici
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  4. #4
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    enfin si tu souhaites mesurer précisément une partie de code,
    Je ne vois pas en quoi ton source est plus précis que getrusage() (sous linux) ou bien un GetProcessTimes() (sous windows). On a des fonctions fournies par le système, il faut s'en servir plutôt que de réinventer la roue.
    Cordialement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    merci tout plein , quel vitesse pour les reponses sur ce forum !!!

    j'ai de la lecture . je vais aller tester tout ça merci encore a tous vous etes au top !!!!!

  6. #6
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Je ne vois pas en quoi ton source est plus précis que getrusage() (sous linux) ou bien un GetProcessTimes() (sous windows). On a des fonctions fournies par le système, il faut s'en servir plutôt que de réinventer la roue.
    Cordialement.
    je ne connais pas Windows, mais getrusage pas standard... ni en C ni sous systèmes unixoide..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    ni sous systèmes unixoide..
    The Open Group Base Specifications Issue 6
    IEEE Std 1003.1, 2004 Edition
    Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.
    NAME

    getrusage - get information about resource utilization

    SYNOPSIS

    [XSI] [Option Start] #include <sys/resource.h>

    int getrusage(int who, struct rusage *r_usage);
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  8. #8
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    et ??

    The Open Group Base Specifications Issue 6
    IEEE Std 1003.1, 2004 Edition
    Copyright © 2001-2004
    depuis quand quelque chose dont la spécification date d'il y a 3 ans est considéré comme standard ???

    80% des systèmes ne supporteront pas..

    Est-ce que TOUTES les distributions l'implémentent ??

    et encore, c'est pour Linux (OpenGroup). Et les autres unixoides ?? HPUX, IRIX, ULTRIX, etc etc ??

    et cygwin ?

    et Windows ?


    NOTE : d'ailleurs, C99 (spécifcations comme son nom l'indique il y a 8 ans..) n'est toujours pas implémenté...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    C'est tiré de la SINGLE UNIX SPECIFICATION v3, quoi de plus standard... à ce moment là C99 n'est pas standard. Encore une fois je le dis, faudra se mettre à la page un jour.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  10. #10
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    C'est tiré de la SINGLE UNIX SPECIFICATION v3, quoi de plus standard... à ce moment là C99 n'est pas standard. Encore une fois je le dis, faudra se mettre à la page un jour.
    justement.. voir plus haut...

    Pas portable...

    La spécification est là, mais de nombreux compilateurs ne l'implantent pas en entier...

    Donc, libre à toi de faire quelque chose sur ta plateforme, avec ton truc à jour.

    Il est bon de savoir que cela SERA une voie future.

    Mais ce n'est pas à conseiller d'emblée.
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. comment mesurer les smileys
    Par rayen07 dans le forum Humour Informatique
    Réponses: 16
    Dernier message: 01/06/2012, 17h33
  2. Comment mesurer les performances des I/O (lecture d'un fichier XML)?
    Par LGnord dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 08/11/2011, 11h39
  3. comment lancer les webservices sous linux
    Par omcougar dans le forum Services Web
    Réponses: 0
    Dernier message: 17/02/2011, 09h42
  4. [2.0] Comment mesurer les ressources allouées à un objet ?
    Par NeoMan dans le forum Framework .NET
    Réponses: 7
    Dernier message: 22/02/2006, 18h48
  5. Comment présenter les processeurs ColdFire ?
    Par d-jo dans le forum Autres architectures
    Réponses: 2
    Dernier message: 17/10/2005, 09h49

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