Calculer le temps d'execution [Résolu]

Signaler
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004
-
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004
-
Bonjour!

Je cherche à calculer le temps que met le processeur pour effectuer une tâche.

On peut utiliser le temps courant avant et après puis faire la différence mais c'est quand même pas loin de 20 lignes de code..

Et ce qu'îl ya une fonction simple qui permet cela en viual c++???

En ous remerçiant à l'avance, passez une bonne soirée!

haffa

8 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
23
end.QuadPart -= start.QuadPart;
Diff.QuadPart = end.QuadPart / freq.QuadPart;

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
23
QueryPerformanceCounter
QueryPerformanceFrequency

ciao...
BruNews, MVP VC++
Messages postés
9
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2004

Si tu veux en savoir plus sur le calcul de la fréquence du CPU : Calcul Fréquence CPU (Windows/Linux)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
23
C'est ici pour un VRAI calcul:
http://www.cppfrance.com/code.aspx?id=23837

ciao...
BruNews, MVP VC++
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004

Bonjour!

Voici l'exemple :

LARGE_INTEGER start, end, Diff;

QueryPerformanceCounter(&start);

CWinThread* pThread = AfxBeginThread( Envoie_TIC, GetSafeHwnd(),THREAD_PRIORITY_NORMAL);

QueryPerformanceCounter(&end);

// ici j'ai des problèmes, je ne suis pas très doué pour les conversion.

Diff = end.QuadPart - start.QuadPart;

Comment faire??
Merci à l'avance et bonne journée!

haffa
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
23
Reste a diviser end.QuadPart par Frequency.

Si tu prends le temps avant et juste derriere le lancement d'un thread, tu n'obtiendras rien de determinant. C'est un bloc fonction qu'il faut mesurer, pas le temps que prend le lancement d'un thread.

ciao...
BruNews, MVP VC++
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004

Re - bonjour!

J'ai changé l'emplacement de la période de mesure.....

UINT Envoie_TIC(LPVOID pParam)
{

SetThreadAffinityMask(GetCurrentThread(), 1);
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);

//Tic_Acc::reset;
//Tic_Acc::reset;

Tic_Acc::run;

Tic_Acc();
while(1)
{

Tic_Acc::I_TIC; //Entrée automate
Tic_Acc(); // appel de l'Automate
wait(1); //Attente de 1 seconde
}
QueryPerformanceCounter(&end);
Diff = (end.QuadPart - start.QuadPart)/(double)freq.QuadPart;

}

Mais le problème maintenant est qu'il genère des erreures au niveau de la dernière ligne : Diff =

C'est un problème de conversion Long_Integer + il n'accepte pas le "/"....

Merci d'avance!!

haffa
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004

Cool merci!

haffa