129 votes

Comment calculer la durée d’exécution d’un extrait de Code en C++

Je dois calculer le temps d'exécution d'un code C++ extrait en quelques secondes. Il doit fonctionner sur Windows ou Unix.

J'ai utiliser le code le code suivant pour ce faire. (import avant)

clock_t startTime = clock();
// some code here
// to compute its execution duration in runtime
cout << double( clock() - startTime ) / (double)CLOCKS_PER_SEC<< " seconds." << endl;

Cependant pour les petites entrées ou de courts énoncés tels que un = un + 1, j'obtiens un "0 secondes". Je pense que cela doit être quelque chose comme 0.0000001 secondes ou quelque chose comme ça.

Je me souviens qu' System.nanoTime() en Java fonctionne assez bien dans ce cas. Cependant je ne peux pas obtenir la même fonctionnalité à partir d' clock() fonction de C++.

Avez-vous une solution?

117voto

Andreas Bonini Points 15709

Essayez avec ceci. Il travaillera comme time(NULL), mais retournera le nombre de millisecondes au lieu de secondes depuis l’époque unix sur windows et linux.

Vous pouvez le modifier pour revenir microsecondes au lieu de millisecondes si vous le souhaitez.

42voto

arhuaco Points 615

J’ai un autre exemple de travail qui utilise microsecondes (UNIX, POSIX, etc.).

Voici le fichier où nous avons codé cela :

https://github.com/Arhuaco/junkcode/BLOB/Master/emqbit-BENCH/BENCH.c

42voto

gongzhitaao Points 2410

Voici une solution simple en C ++11 qui vous donne satisfaction de résolution.

Ou sur * nix, pour c ++03

Voici l’exemple d’utilisation :

De https://gist.github.com/gongzhitaao/7062087

19voto

TomA Points 5600
<pre><code></code><p><code></code>va hors de portée, qu'il affichera le temps s’est écoulé depuis sa création.</p><p><strong>Mise à jour</strong> <a href="https://github.com/catnapgames/TestTimerScoped" rel="nofollow">https://github.com/catnapgames/TestTimerScoped</a></p></pre>

5voto

Captain Comic Points 3251

Windows fournit la fonction QueryPerformanceCounter(), et Unix a gettimeofday () les deux fonctions peuvent mesurer au moins 1 micro-seconde différence.

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