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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 oct. 2004 à 13:20
end.QuadPart -= start.QuadPart;
Diff.QuadPart = end.QuadPart / freq.QuadPart;

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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
Rejoignez-nous