72 votes

Qt: moyen rapide de mesurer le temps?

Je cherche l'équivalent en Qt de GetTickCount ()

Quelque chose qui me permettra de mesurer le temps nécessaire pour qu'un segment de code s'exécute comme suit:

 uint start = GetTickCount();
// do something..
uint timeItTook = GetTickCount() - start;
 

Aucune suggestion?

116voto

ShaChris23 Points 7713

Je pense qu'il est probablement préférable d'utiliser QElapsedTimer car c'est la raison pour laquelle la classe existe en premier lieu. Notez qu'il est également immunisé contre le changement d'heure du système.

92voto

Dusty Campbell Points 1895

Que diriez-vous de QTime ? Selon votre plate-forme, il devrait avoir une précision d'une milliseconde. Le code ressemblerait à quelque chose comme ça:

 QTime myTimer;
myTimer.start();
// do something..
int nMilliseconds = myTimer.elapsed();
 

37voto

Lilian A. Moraru Points 443

Même si la première réponse était acceptée, le reste des lecteurs des réponses devraient prendre en compte la suggestion de ShaChris23.
QElapsedTimer peut également être utilisé pour calculer le temps en nanosecondes.
Exemple de code:

 QElapsedTimer timer;
qint64 nanoSec;
timer.start();
//something happens here
nanoSec = timer.nsecsElapsed();
//printing the result(nanoSec)
//something else happening here
timer.restart();
//some other operation
nanoSec = timer.nsecsElapsed();
 

5voto

Nikos C. Points 18676

Ni GetTickCount() ni QTime vous donnera la quantité de temps que votre code doit s'exécuter. Pour cela, vous devez le temps de calcul de votre processus consomme. GetTickCount() et QTime vous donner un réel temps écoulé, le sens qu'il inclut le temps CPU consommé par tous les autres processus sur votre système, y compris le système d'exploitation lui-même.

Pour obtenir le temps de calcul de votre code (et uniquement votre code) consommée, utilisez clock() à la place:

#include <ctime>
// ...

clock_t start = clock();
// ...
// Code you want to measure
// ...
clock_t finish = clock();

Pour obtenir le temps consommé par le code de l'entre-deux - clock() des appels, vous faites:

(finish - start) / CLOCKS_PER_SEC

clock() est une fonction standard, de sorte qu'il peut être utilisé sur tous les systèmes. Cependant, il pourrait ne pas être très précis. Si vous voulez plus de précision, vous devez utiliser la plate-forme de fonctions spécifiques à la place (à partir de POSIX ou WinAPI, par exemple.)

Dans tous les cas, Qt n'est pas en elle-même un moyen d'obtenir le temps CPU consommé par votre processus.

1voto

Christian Points 19

Une stratégie générale consiste à appeler plusieurs fois la méthode observée. 10 appels offrent une précision de 1,5 ms et 100 de 0,15 ms.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X