pb de tp !!! ( avec QueryPerformanceCounter ) - C++ - Programmation
Marsh Posté le 10-08-2004 à 11:57:59
non. tu crois qu'il se passe quoi entre 2 mesures ?
sinon pour titre à la con
Marsh Posté le 10-08-2004 à 12:10:40
ben je comprend pas ce qui peut y avoir.
Windows peut bloquer le proc un moment mais je le verrais ds le detail des tp
Marsh Posté le 10-08-2004 à 16:50:38
Citation : printf("durée traitement1= %lf\n\n",(Count12.QuadPart - Count11.QuadPart)/(double)frequence.QuadPart); |
(LONGLONG - LONGLONG) / double, t'es sûr de filer ce que tu veux ? ("%lf" )
Marsh Posté le 10-08-2004 à 17:16:36
Pour moi ca doit renvoyer des double mais je vais essayer tu as peut etre raison
Marsh Posté le 10-08-2004 à 17:21:44
bon en castant en double ca fait rien mais qqun peut me rappeler les %?
Merci
Marsh Posté le 10-08-2004 à 17:36:12
et en changant %lf par %f aucun changement
Marsh Posté le 10-08-2004 à 21:03:50
Cyber_Steph a écrit : Bonjour, |
Bizarre, vous avez dit bizarre...?
Triple buse(ard) !
Marsh Posté le 10-08-2004 à 22:03:46
%I64 pour LONGLONG (pas standard il me semble)
http://www.codeproject.com/cpp/precisetimer.asp
utilise des double
Marsh Posté le 11-08-2004 à 10:30:48
Heu je comprend pas bien vos histoires de % . Je les connait pas du tout ceux la. lld ? llu?
Marsh Posté le 11-08-2004 à 10:39:26
En fait tu pourrait me rappeler l'histoire des long, je m'en sert jamais y a pas que des long int.
Marsh Posté le 11-08-2004 à 10:49:06
En plus des int/double ca doit faire des double donc je devrait mettre %f ou %lf.
Marsh Posté le 11-08-2004 à 10:50:02
je simplifie volontairement
classiquement sizeof(long) == sizeof(mot mémoire)
32bits sur un intel. sur nos cher x86-32 bits, on a aussi sizeof(long) == sizeof(int)
un long doit au moins avoir 32 bits (je simplifie)
classiquement sizeof(long long) == 2 * sizeof(mot mémoire), donc au moins 64 bits
Marsh Posté le 11-08-2004 à 10:52:49
Je comprend pas a quoi ca sert,
ta peut etre trop simplifié
Marsh Posté le 11-08-2004 à 10:57:50
Cyber_Steph a écrit : Je comprend pas a quoi ca sert, |
chaque type à son format pour printf/scanf
Marsh Posté le 11-08-2004 à 11:07:59
oui je sais bien.
je comprend pas t histoires de sizeof en fait
Marsh Posté le 11-08-2004 à 14:30:29
C bon j'ai trouvé:
Ca doit etre le debugger ou Visual Studio qui fout la merde.
Si je lance mon appli en dehors j'ai pas de pb
Marsh Posté le 11-08-2004 à 15:41:39
Cyber_Steph a écrit : |
surement pas!
Cyber_Steph a écrit : |
Vérifie que t'as pas oublié d'initialiser une variable
Marsh Posté le 10-08-2004 à 11:53:36
Bonjour,
Il m'arrive un truc trop bisard,
j'ai un code du genre:
********************
void fonct(){
QueryPerformanceCounter(&Count111);
QueryPerformanceCounter(&Count11);
// traitement1
QueryPerformanceCounter(&Count12); // counter value
printf("durée traitement1= %lf\n\n",(Count12.QuadPart - Count11.QuadPart)/(double)frequence.QuadPart);
QueryPerformanceCounter(&Count11);
// traitement2
QueryPerformanceCounter(&Count12); // counter value
printf("durée traitement2= %lf\n\n",(Count12.QuadPart - Count11.QuadPart)/(double)frequence.QuadPart);
// .... etc .....
QueryPerformanceCounter(&Count11);
// traitementi
QueryPerformanceCounter(&Count12); // counter value
printf("durée traitementi= %lf\n\n",(Count12.QuadPart - Count11.QuadPart)/(double)frequence.QuadPart);
QueryPerformanceCounter(&Count122); // counter value
printf("durée total= %lf\n\n",(Count122.QuadPart - Count111.QuadPart)/(double)frequence.QuadPart);
}
*********************************
Une fois sur 4 le tp total n'est pas egal à la somme des tp des traitements. Il est beaucoup plus long. Mes traitements sont de l'ordre de la ms alors que le totale atteint souvent des dizaines de ms.
Je comprend pas pourtant le total devrait etre egal à la somme ?
Si qq un à une idée ?
Message édité par Cyber_Steph le 10-08-2004 à 14:38:02