Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.0 - Qt Creator : 4.3.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Macronomètres ;)

2 petites macros C++/Qt pour encadrer une portion de code dont vous voulez mesurer le temps d'exécution

#include <QObject>
#include <QElapsedTimer>
#include <QDebug>

.......

#if defined (TRACE_PPJ)
#define CHRONO_START {QElapsedTimer __chronoPPJ; __chronoPPJ.start();
#define CHRONO_END qDebug() << QObject::tr ("%1 exécuté en %2 ms").arg(Q_FUNC_INFO).arg(__chronoPPJ.elapsed());}
#else
#define CHRONO_START
#define CHRONO_END
#endif
Pendant le temps de développement et de mise au point, je définis TRACE_PPJ dans le fichier .pro
DEFINES += TRACE_PPJ
ensuite j'enlève cette ligne avant une compil "officielle" pour éviter les "traces" inesthétiques.

Réponses

  • C'est bon de savoir ça, merci de ton partage =)
  • J'ai oublié de dire comment on s'en sert + une petite contrainte

    usage :
    CHRONO_START;
    // ici la version d'un traitement très long que vous cherchez à optimiser
    CHRONO_END;
    À vous d'en faire bon usage, sachant que l''affichage peut être "mensonger" puisque j'affiche le nom de la fonction qui contient les macros, dont le code chronométré peut n'être qu'une toute petite partie.

    Attention !! le code inclus entre les deux macros est un BLOC ! donc gaffe aux déclarations de variables à l'intérieur....
    CHRONO_START;
    int var = 4;
    // ...
    CHRONO_END;
    var ++; // <-------------------------- AÏE !
  • merci :)
Connectez-vous ou Inscrivez-vous pour répondre.