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 :

Mesurer le temps d'exécution d'un fragment de code sous Linux


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 199
    Par défaut Mesurer le temps d'exécution d'un fragment de code sous Linux
    Slt les gars,

    voila j'ai développé un programme en C++ sous Linux (gcc)

    Ça fait un petit moment que je traine sur le Web à la recherche d'une fonction qui me permettrait de calculer le temps exact d'exécution (le plus exacte possible) d'un bout de code (pas un programme en entier).

    J’ai commencé avec la fonction clock(), mais elle avait une granularité trop importante (de l'ordre de la seconde) j'ai donc décidé de chercher autre chose.

    Je me suis donc rabattu sur gettimeofday. Elle donne une précision assez acceptable. Le problème est que ce type de fonction donne des mesures assez biaisées. Je m'explique. gettimeofday est utilisé afin de récupérer un instant de début et un instant de fin. La différence entre les deux me donne théoriquement le temps d'exécution. Le problème est que ce temps d'exécution n'est vrai que dans le cas où un seul et unique processus s'exécute sur la machine. Ce qui n'est pas le cas. Les lapses de temps ou le sheduleur à fait tourné d'autre programme sont inclus dans la mesure. Ce qui ne m'arrange pas du tout. Ceci me donne des fluctuations de l'ordre de 3 à 10 millisecondes. Ce qui est inacceptable pour moi (même en marchant avec le minimum de processus). Je ne sais pas s’il est possible de faire en sorte qu'un fragment de code ne soit pas arrêté par le shiduleur tant qu'il n'a pas été complètement exécuté. Une sorte de bloc atomique.

    Sinon peut être qu'une bibliothèque existe et qui m'a échappé !!!

    Je me tourne donc vers vous (mon ultime espoir).

    Le problème peut se résumer ainsi.

    Peut-on obtenir le temps d'exécution d'un fragment de code uniquement lorsque ce dernier est éxecuté ou le nombre de cycles processeur qu'il a consommé ?

    Merci d'avance.

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    ne te convient pas ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 199
    Par défaut
    oui,

    déjà parce que j'ai besoin d'évaluer le temps d'exécution d'un fragment de code et non d'un programme en entier.

    aussi, je ne suis pas sur qu'il fasse abstraction du temps ou le sheduleur lance un autres programmes. non ??!!

  4. #4
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    Avec gprof tu peux pas avoir ce que tu veux ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Par défaut
    salut

    www.pallier.org/ressources/timing_linux/timing.pdf

    et lit la page 3, et le mieux c'est de tout lire

  6. #6
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    A mon avis, le plus simple et le plus efficace reste boost::timer

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/07/2007, 11h44
  2. [TP] Mesure du temps d'exécution d'un algorithme
    Par williamdunord dans le forum Turbo Pascal
    Réponses: 19
    Dernier message: 18/05/2007, 06h47
  3. Mesurer le temps d'exécution d'un bout de code
    Par Floréal dans le forum C++
    Réponses: 4
    Dernier message: 06/04/2007, 09h46
  4. mesurer le temps d'exécution d'une fonction
    Par Fonzy007 dans le forum C
    Réponses: 12
    Dernier message: 28/12/2006, 17h27
  5. Réponses: 6
    Dernier message: 22/09/2005, 16h59

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