Calculer le temps d'execution

Résolu
new0staff
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004
- 13 oct. 2004 à 23:35
new0staff
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004
- 15 oct. 2004 à 09:43
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

BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
14 oct. 2004 à 13:20
end.QuadPart -= start.QuadPart;
Diff.QuadPart = end.QuadPart / freq.QuadPart;

ciao...
BruNews, MVP VC++
3
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
13 oct. 2004 à 23:48
QueryPerformanceCounter
QueryPerformanceFrequency

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

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

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

14 oct. 2004 à 11:34
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
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
14 oct. 2004 à 12:01
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++
0
new0staff
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004

14 oct. 2004 à 12:43
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
0
new0staff
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004

15 oct. 2004 à 09:43
Cool merci!

haffa
0