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 :

Comment mesurer le temps d'une fonction qui n'est pas appelée dans le main()


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Ph.D student
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ph.D student

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 0
    Points
    0
    Par défaut Comment mesurer le temps d'une fonction qui n'est pas appelée dans le main()
    Bonjour a tous,

    Je travaille sur le HEVC (le nouveau standard de compression) sur windows 8, le profilage de mon PC ne marche pas , donc j'ai essayé de mesurer le temps d'une fonction qui n'est pas appelé dans le main(), meme son fichier .cpp (où elle se trouve) n'est pas appelé dans le main, mais malheureusement, pas de résultats ...

    voici une potion du code ajouté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    ** \file     TEncSearch.cpp
     \brief    encoder search class
    .
    .
    .
    if ( bFirstSearchDiamond == 1 )
        {
    		                                                                                                      clock_t start, end; 
                                                                                                                          start = clock();
     
          xTZ8PointDiamondSearch ( pcPatternKey, cStruct, pcMvSrchRngLT, pcMvSrchRngRB, iStartX, iStartY, iDist );
     
    	                                                                                                              end = clock(); 	
                                                                                                                          tempsdiam= (end - start)/(double) CLOCKS_PER_SEC;
     
        }
    .
    .
    .
    et j'ai mis dans le main(): printf("temps en secondes : % f\n", tempsdiam);

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Bonjour,

    Alors, pour commencer, printf c'est du C. Préfère utiliser std::cout.

    Ensuite, où définis-tu tempsdiam?

    As-tu essayé d'afficher le temps dans ta fonction?

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Ph.D student
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ph.D student

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    merci pour votre réponse,

    J'ai utilisé le printf car le code du standard utilise déjà le printf
    tempsdiam est définie dans le main() , j'ai écris: Double tempsdiam;

  4. #4
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Salut ,

    Essais de printf start, end et tempsdiam juste après ton tempsdiam= (end - start)/(double) CLOCKS_PER_SEC;.

    Et dis nous ce que cela affiche.
    Homer J. Simpson


  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Ph.D student
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ph.D student

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Bonjour,

    J'ai essayé ...et j'ai le message il y'a des erreurs à la build !!!!

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Si tu ne nous donnes pas les messages d'erreurs, ça va être difficile de t'aider...

  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    et le code autour des erreurs, ca serait pas mal non plus.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Ph.D student
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ph.D student

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    merci pour votre contribution ...voici un fichier espèrant qu'il vous explique un peu le problème

    merci d'avance

    Essai de mesure du temps.docx

  9. #9
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Alors, plusieurs problèmes...

    - Un fichier docx pour répertorier des erreurs avec des captures d'écran quasiment illisible ne sert quand même pas à grand chose.

    - Est-ce que tu comprends comment fonctionne le timer ou appliques-tu du code dont tu ne t'es jamais servi? Dans les deux cas, je te conseille de faire un exemple très simple dans lequel tu pourrais mesurer le temps d'une fonction appeler dans le main ou tout autre endroit. Si tu n'y arrives pas, poste-nous ce que tu as fais (avec la balise CODE plutôt qu'un fichier docx) et les erreurs que tu rencontres.

    Bon courage

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    Ph.D student
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ph.D student

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Bonjour,

    Je n'ai mis le timer que lorsque je me suis rassuré qu'il fonctionne bien

    Le problème que mon code contient 7 projets, dont deux ont un executable (un pour le codage et l'autre pour le décodage)
    et mon problème que le fonction que j'espère mesurer son temps n'est pas appelé dans le main, c'est une fonction qui appartient à un projet LIB, et là pas d'executable... J'ai mis mon timer et je croix qu'il fonctionne bien mais je ne vois pas le résultats
    Rq. Je ne peux voir l'affichage de printf que dans le main (j'ai affiché "hello" avec printf dans le main et lorsque je l'est écris dans le fichier qui contient ma fonction à tester, pas de résultat !!! comme ci les programmeurs ont exigé l'affichage que dans le main)

  11. #11
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Je suppose que tu travailles sous visual studio (version 2013?).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #include <iostream> //pour utiliser std::cout;
    #include <chrono> //pour utiliser les timer définient en C++11;
    #include <vector>
     
    typedef std::chrono::system_clock SystemClock;
    typedef std::chrono::time_point<SystemClock> TimePoint;
    using namespace std::chrono;
     
    void foo(unsigned int n)
    {
      std::vector<unsigned int> vec;
      vec.resize(n);
      for (unsigned int i = 2; i < n; ++i)
      {
          vec.push_back(i);
      }
    }
     
    int main(int argc, char* argv[])
    {
      TimePoint start, end;
      start = SystemClock::now();
     
      foo(1000000);
     
      end = SystemClock::now();
     
      std::cout << "Temps ecoulé: " << duration_cast<microseconds>(end-start).count() << " µs" << std::endl;
     
      return 0;
    }
    Peux-tu me dire ce que retourne ce code?

  12. #12
    Nouveau Candidat au Club
    Femme Profil pro
    Ph.D student
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ph.D student

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    je travaille avec la version 2010
    j'essaye ce code ou pas??

  13. #13
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    L'idée c'est de connaitre ton outil de travail.

    La version de 2010 embarque peut-être un mode C++0x, qui préfigure la norme C++11 (parue en 2011, donc après).
    Si c'est le cas, il est possible que les std::timers soient défini, mais ce n'est pas sur.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Problème fonction qui s'ouvre lors d'une macro qui n'est pas en lien
    Par holaholahola dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/08/2014, 09h14
  2. [RegEx] Remplacement d'une balise qui n'est pas imbriquée dans une autre
    Par w3ar3dus1 dans le forum Langage
    Réponses: 0
    Dernier message: 30/05/2011, 11h43
  3. Une fonction qui ne veut pas de mes variables
    Par zebulondu54 dans le forum Langage
    Réponses: 5
    Dernier message: 09/06/2008, 05h41
  4. Réponses: 3
    Dernier message: 08/04/2008, 20h50
  5. Comment mesurer le temps d'une fonction ?
    Par Battosaiii dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/10/2006, 16h37

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