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

Threads & Processus C++ Discussion :

C++ : mesure du temps d'exécution en millisecondes (qqchose de portable)


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Par défaut C++ : mesure du temps d'exécution en millisecondes (qqchose de portable)
    Bonjour.

    Y-a-t-il un moyen simple d'afficher le temps d'exécution d'un code en millisecondes :
    1) qui soit portable sur les différents OS
    2) qui ne produise pas de bug pour une application multithreadée

    Si je ne peux pas avoir les 2, quelles est la meilleure façon de procéder en gardant la condition 2 mais pour Windows et Linux (toutes les distribs, pas seulement Ubuntu) séparément ?

    Merci beaucoup

  2. #2
    Membre expérimenté Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 624
    Par défaut
    Citation Envoyé par Kaluza Voir le message
    Y-a-t-il un moyen simple d'afficher le temps d'exécution d'un code en millisecondes :
    1) qui soit portable sur les différents OS
    Je viens de faire un portage, et je peux te dire que non (ou alors je l'ai pas trouvé). Sauf peut-être si sous windows tu te décides à utiliser Cygwin, et sous Linux wine.


    Il me semble qu'il y a des fonctions qui marchent sur les deux OS, mais elles ne font pas la différence entre le temps kernel et le temps utilisateur (et donc renvoient systématiquement la somme des deux).

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Salut,

    j'avais fait une classe qui fait cela il y a quelques années, je suis au boulot là je posterai le code en fin d'après-midi.


    NeoKript

  4. #4
    Membre éclairé
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Par défaut
    Sinon je peux aussi faire un directive pour le préprocesseur suivant le système d'exploitation...
    Dans ce cas, quelle est la méthode Windows et la méthode Linux (qui fonctionne sur toutes les distribs) la plus simple ?

  5. #5
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Personnellement j'utilise l'implémentation de la bibliothèque Ogre qui marche très bien et est très précise -- et tu pourras voir quelles fonctions ils utilisent par OS :

    - l'interface : https://bitbucket.org/sinbad/ogre/sr...de/OgreTimer.h

    - l'implémentation sous Windows : https://bitbucket.org/sinbad/ogre/sr.../OgreTimer.cpp

    - l'implémentation sous OSX : https://bitbucket.org/sinbad/ogre/sr.../OgreTimer.cpp

    Le code tiens compte des problèmes de synchro multi-core pour la version windows (qui est toujours une horreur a faire correctement, c'estpour ça que j'utilise ce code).

    Sinon, officiellement il y a std::chrono qui est dans un future standard (C++2011? je sais plus) et qui sera l'interface standard pour avoir un temps précis.

    Il y a une implémentation dans boost (boost::chrono) mais je ne sais pas à quel point elle est complète. Il se peut que tu sois interéssé pour l'implémenter.

  6. #6
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Complément d'information : boost::chrono a été accepté dans boost (source : http://lists.boost.org/boost-announce/2011/01/0280.php ).


    J'imagine que si les performances sont au rdv, ça sera pas mal. Je le met dans la liste des libs a tester dans mon jeu tiens.

    edit> La doc actuelle : http://svn.boost.org/svn/boost/sandb...tml/index.html

  7. #7
    screetch
    Invité(e)
    Par défaut
    Citation Envoyé par Klaim Voir le message
    Personnellement j'utilise l'implémentation de la bibliothèque Ogre qui marche très bien et est très précise -- et tu pourras voir quelles fonctions ils utilisent par OS :

    - l'interface : https://bitbucket.org/sinbad/ogre/sr...de/OgreTimer.h

    - l'implémentation sous Windows : https://bitbucket.org/sinbad/ogre/sr.../OgreTimer.cpp

    - l'implémentation sous OSX : https://bitbucket.org/sinbad/ogre/sr.../OgreTimer.cpp

    Le code tiens compte des problèmes de synchro multi-core pour la version windows (qui est toujours une horreur a faire correctement, c'estpour ça que j'utilise ce code).

    Sinon, officiellement il y a std::chrono qui est dans un future standard (C++2011? je sais plus) et qui sera l'interface standard pour avoir un temps précis.

    Il y a une implémentation dans boost (boost::chrono) mais je ne sais pas à quel point elle est complète. Il se peut que tu sois interéssé pour l'implémenter.
    leur implémentation ne tient pas un peu du bricolage?

Discussions similaires

  1. Mesure du temps d'exécution
    Par michaeljeru dans le forum SL & STL
    Réponses: 2
    Dernier message: 23/11/2007, 13h28
  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