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

MFC Discussion :

[MFC] : CTime ? Calcul de temps d'�x�cution


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    50
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 50
    Par d�faut [MFC] : CTime ? Calcul de temps d'�x�cution
    bonjour,

    voil� j'ai besoin d'�valuer diff�rents temps d'�x�cution de l'ordre de la �s ou de la milliseconde dans mon programme. je voulais savoir comment faire pour retourner l'heure courante pr�cise � la milli ou a la micro seconde...
    La classe CTime est elle ex�cutable?
    Merci d'avance

  2. #2
    Membre confirm�

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    D�cembre 2002
    Messages
    216
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 216
    Par d�faut
    oui on oeut utiliser CTime::GetAsSystemTime qui renvoie une structure SYSTEMTIME ou les infos sont � la milliseconde (voir aide MSDN)
    sinon la fonction clock() qui renvoie un nombre de ticks donn�s au momment de l'appel , il suffit de la rappeller et faire la difference avec le premier appel et l'on obtiens le temps �coul� en millisecondes

  3. #3
    Membre extr�mement actif

    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par d�faut
    On peut aussi utiliser GetThreadTime de l'API WINDOWS

  4. #4
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    50
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 50
    Par d�faut
    en fait je suis sous Pocket PC avec eVC++ donc pas de fonction clock() et la m�thode GetAsSystemTime me retourne des valeurs nulles a chaque fois pr les millisecondes.
    Quant � la m�thode GetThreadTime je ne vois pas comment l'utiliser...

  5. #5
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    sinon, tu peux utiliser QueryPerformanceCounter & QueryPerformanceFrequency (d�tails dans msdn)

  6. #6
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    50
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 50
    Par d�faut
    merci je v voir si je m'en sors avec ca...

  7. #7
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    50
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 50
    Par d�faut
    salut

    j'essaie d'utiliser les fonctions QueryPerformanceCounter et QueryPerformanceFrequency mais apr�s un petit calcul il me retourne toujours comme temps d'�x�cution.
    Je fais mon test sur une boucle vide de for:
    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
     
                    LARGE_INTEGER	Freq;
    	LARGE_INTEGER	Start;
    	LARGE_INTEGER	Stop;
     
    	QueryPerformanceFrequency(&Freq);
     
    	QueryPerformanceCounter(&Start);
    	for (int i = 0 ; i < 10000 ; i++)
    	{
    	}
    	QueryPerformanceCounter(&Stop);
     
    	_int64 iFreq;
    	_int64 iStart;
    	_int64 iStop;
     
    	iFreq = (_int64) Freq.QuadPart;
    	iStart = (_int64) Start.QuadPart;
    	iStop = (_int64) Stop.QuadPart;
    	float fResult;
    	fResult = (iStop - iStart)/iFreq;
    Pourtant les valeur iFreq, iiStart et iStop ne sont pas nulles.

    Merci du petit coup de main si vous voyez un truc

  8. #8
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    � mon avis, la boucle for est execut�e trop rapidement
    essaie de la remplacer par un truc du genre
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    	DWORD a = GetTickCount();
    	DWORD b = GetTickCount();
    	while (b-a<2000)
    		b = GetTickCount();

  9. #9
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    50
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 50
    Par d�faut
    ouais mais le truc c que pr l'instant je fais un test avec une boucle for mais par la suite le bout de code � �valuer sera plus complet...
    Et puis de toute fa�on, mes valeurs retourn�es par les fonctions ne sont pas nulles donc je me demande si mon pb ne vient de mon calcul de temps ou de la conversion _int64 / float ...

  10. #10
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    c'est normal que ca te donne z�ro, car le type LARGE_INTEGER est un entier, il faut malheureusement se risquer � une conversion pour avoir autre chose que des entiers
    entier / entier => entier

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    	__int64 tdeb = (__int64)Start.QuadPart;
    	__int64 tfin = (__int64)Stop.QuadPart;
    	double temps = ((double)tfin-tdeb) / (double)Freq.QuadPart;

  11. #11
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    50
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 50
    Par d�faut
    trop bien!!
    merci beaucoup tu peux pas savoir comme ca me soulage d'un poids

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. calculer le temps d'�x�cution d'une fonction
    Par phpines dans le forum G�n�ral Python
    R�ponses: 3
    Dernier message: 09/04/2013, 09h47
  2. [XL-2003] Calculer le temps d'�x�cution
    Par zangaloni dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 09/06/2011, 10h22
  3. temps d'�x�cution et ressources
    Par Tchinkatchuk dans le forum D�cisions SGBD
    R�ponses: 5
    Dernier message: 12/04/2005, 09h11
  4. calculer le Temp �coul�
    Par ada_b dans le forum SQL
    R�ponses: 1
    Dernier message: 30/11/2004, 09h44
  5. R�ponses: 8
    Dernier message: 18/09/2002, 03h20

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