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 :

Connaitre le nombre de cycles processeur pour un programme donne


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Connaitre le nombre de cycles processeur pour un programme donne
    Bonjour, comme le titre du sujet l'indique, je souhaiterais savoir si il existe un outil (ici, pour des programmes en C (je ne pense pas que cela ait beaucoup d'importance)) qui permette de savoir le nombre de cycles processeur qu'il ya eu pendant l'execution d'un programme ?
    Un truc dans le meme genre que valgrind, qui se lancerait de la meme facon :
    valgrind ./mon_prog => la on a toutes les fuites memoires
    le_truc_que_je_cherche ./mon_prog => la on le nombre de cycles.

    Merci.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 393
    Points : 23 727
    Points
    23 727
    Par défaut
    Sous UNIX, prof et gprof. Et clock() pour connaître le temps CPU consommé entre deux appels à cette fonction.

    Ça ne te donnera pas le nombre de cycles, mais une durée dont la précision dépendra un peu du système que tu utilises.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    D'accord, si quelqu'un connait d'autres outils (mieux ?) je reste ouvert. (je mets "resolu" quand meme).
    merci

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 393
    Points : 23 727
    Points
    23 727
    Par défaut
    Citation Envoyé par Arthus Voir le message
    D'accord, si quelqu'un connait d'autres outils (mieux ?) je reste ouvert. (je mets "resolu" quand meme).
    merci
    Plus précis, ça va être difficile sans mettre la main à la pâte. Par contre, plus simple, il suffit de faire « time monprogramme ».

    Sinon, tu peux utiliser l'instruction RDTSC si tu travailles sur x86. Mais ce sera un compte « absolu », et pas spécialement celui des cycles machine alloués à ton programme.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    J'utilise deja time et je voulais justement trouve une alternative.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Non je suis sur i686(corrige)

  7. #7
    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 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    en outil, non je ne connais pas..

    En fonction, j'ai mis à disposition sur le site (rubrique Sources -> Gestion du temps) une routine équivalente à clock qui donne le temps réel absolu qui s'est écoulé à une précision de la microseconde..

    Pour retrouver le nombre de cycles il suffit de multiplier par la constante CLOCKS_PER_SEC...

    Mais pour avoir le vrai nombre de cycles du programme, il faudrait modifier la fonction pour avoir réellement l'équivalent de clock , c'est à dire pas le temps réel absolu mais le temps réel passé.. (mon problème était inverse : avoir un vrai décompteur de temps réel, et pas de temps du programme)

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 393
    Points : 23 727
    Points
    23 727
    Par défaut
    On peut dire quand même que, d'une manière générale, avoir le décompte exact de cycles écoulés sur une machine sans recourir à des mécanismes dédiés tels que RDTSC reste une vue de l'esprit. Même en travaillant en mono-tâche et en virant les interruptions, il faudrait se consacrer exclusivement à leur surveillance, à l'exclusion de toute autre tâche, ce qui n'a évidemment aucun intérêt, sauf à utiliser des blocs d'instructions dont on connaît à l'avance le nombre de cycle (qui doit être fixe).

    Et même là, on fait encore abstraction des wait states

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

Discussions similaires

  1. [WD-2010] Connaitre le Nombre de pages et aller à une page donnée
    Par moebius80 dans le forum VBA Word
    Réponses: 3
    Dernier message: 26/02/2012, 21h03
  2. Réponses: 16
    Dernier message: 06/06/2008, 21h25
  3. connaitre le nombre de processeur utilisés
    Par manue85 dans le forum AIX
    Réponses: 2
    Dernier message: 05/03/2008, 14h54
  4. Connaitre le nombre de saisies dans une base de données
    Par b.bilel dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/01/2008, 22h09
  5. Réponses: 4
    Dernier message: 01/05/2007, 10h37

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