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 :

Analyse des performance d'un programme


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut Analyse des performance d'un programme
    Bonjour,

    Je travaille actuellement sur un petit projet qui necessite un traitement "quasi temps réel" des données.

    Sous windows, en C++, et je construit une DLL (c'est un plugin) Bon je sais, temps réel sous windows, c'est un peu comme le soleil qui se coucherait le matin....

    En gros, je ne peux accepter plus de 5ms de temps de calcul, et plus c'est rapide, mieux c'est !

    J'ai donc passé pas mal de temps à essayer de trouver les algos les plus efficaces, et maintenant je voudrait les comparer entre eux, et determiner les points les plus interessants à optimiser.

    Je cherche donc un logiciel capable d'analyser lers performances de ma DLL, et de m'aider à determiner les points critiques.

    Merci !

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par défaut
    Salut,

    Est ce que les fonctions de datation comme QueryPerformanceCounter/QueryPerformanceFrequency ou GetTickCount pour mesure les temps d'exécution ne suffisent pas à ton besoin ? Que te faut-il de plus ?

    Sinon à propos des 5ms - en temps d'exécution pourquoi pas mais il me semble qu'il y a une limite liée au quantum de temps de Windows (de l'ordre de 10ms) qui pourrait par exemple limiter la possibilité qu'un autre thread utilisateur de ta DLL puisse exploiter des données au même rythme.

  3. #3
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Un quantum de temps ? Jamais entendu parler...

    En tout cas, j'ai plusieurs appli (developpées par d'autres ou par moi) qui tournent avec moins de 5ms de latence. Meme en Java, d'ailleurs, malgré la machine virtuelle.

    Les truc du genre QueryPerformanceCounter sont tres bien pour mesurer une fonction precise... je voudrais un truc plus "global"

    Du genre Intel VTune, mais gratuit... ou pas cher !

    Ou le mieux, une API du genre : http://www.verifysoft.com/fr_ctcpp.html

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Le quantum de temps est le temps d'exécution que l'OS alloue au processus courant avant de le mettre en veille et de passer à un autre processus. Donc par exemple si tu mesures 30 ms, il est probable que ton processus n'ait été actif que 10 ms, et endormi 20 ms.
    C'est ce qui se passe sur tous les OS non temps réel.

    Au niveau des profilers gratuits, il y a AMD code analyst si je me souviens bien.

  5. #5
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Effectivement, je suis en train de fouiner dans les infos sur AMD CodeAnalyst Performance Analyzer, qui a l'air pas mal...

    Pour le quantum de temps, je ne savais pas que cela s'appelait comme ça...

    Est-ce que vous connaissez la valeur sous windows ? (je suppose que ça depends de la priorité du processus et du nombre de processus actif...)

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par défaut
    Citation Envoyé par buzzkaido

    Les truc du genre QueryPerformanceCounter sont tres bien pour mesurer une fonction precise... je voudrais un truc plus "global".
    Oh ben tu n'es pas obligé de limiter la portée à une fonction ou une méthode de classe, c'est possible de mémoriser des temps dans des variables globales... mais ceci dit c'est vrai que l'idéal est sûrement le profiling, puisque c'est fait pour ça apparemment, mais ça doit nécessiter un investissement de départ (temps, argent...). Je trouve que les mesures données par les compteurs windows permettent déjà de comprendre pas mal de choses. A toi de voir si tu as vraiment besoin de plus d'infos. Je serais d'ailleurs intéressé de savoir quel genre d'infos supplémentaires on peut tirer de ces outils.

  7. #7
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Ben, grosso modo, ça permet de recuperer le taux de branch-prediction réussit, l'évolution du cache, les acces memoire non alignés, les piles d'appels... bref plein de trucs !

    Y'a "PerfMonitor" qui permet deja de recuperer pas mal d'infos, mais sur l'execution globale du processeur, pas limitée à un processus...

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour le temps d'exécution effectivement accordé à un thread, tu peux essayer avec GetThreadTimes()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [PC fixe] Recherche logiciel pour analyse des performances
    Par Auteur dans le forum Ordinateurs
    Réponses: 5
    Dernier message: 13/04/2012, 17h07
  2. Analyse des performances d'un réseau LAN
    Par la_cavalière dans le forum Windows
    Réponses: 1
    Dernier message: 27/08/2010, 17h36
  3. Analyse des performances du réseau LAN
    Par la_cavalière dans le forum Réseau
    Réponses: 0
    Dernier message: 06/07/2010, 01h00
  4. Analyses des performance ?
    Par moidibe dans le forum Visual C++
    Réponses: 4
    Dernier message: 09/02/2010, 14h37
  5. Réponses: 8
    Dernier message: 18/09/2007, 12h51

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