Utilisation de l'horloge() pour mesurer le temps d'exécution
Je suis en cours d'exécution d'un programme C utilisant GCC et un DSP propriétaire cross-compilateur pour simuler certains functioality. J'utilise le code suivant pour mesurer le temps d'exécution de la partie de mon programme:
clock_t start,end;
printf("DECODING DATA:\n");
start=clock();
conv3_dec(encoded, decoded,3*length,0);
end=clock();
duration = (double)(end - start) / CLOCKS_PER_SEC;
printf("DECODING TIME = %f\n",duration);
où conv3_dec()
est une fonction définie dans mon programme et je veux trouver le moment de l'exécution de cette fonction.
Maintenant, la chose est quand mon programme s'exécute, le conv3_dec()
fonctions s'exécute pendant près de 2 heures, mais la sortie de la printf("DECODING TIME = %f\n",duration)
dit que l'exécution de la fonction de fini en une demi-seconde (DECODING TIME = 0.455443
) . C'est très confus pour moi.
J'ai utilisé le clock_t
technique pour mesurer le temps d'exécution de programmes précédemment, mais la différence n'a jamais été aussi énorme. Est-ce causé par le cross-compilateur. Tout comme une note de côté, le simulateur simule une DSP processeur cadencé à seulement 500 mhz, de sorte que la différence entre les vitesses d'horloge de processeur DSP et mon CPU origine de l'erreur est la mesure de la CLOCKS_PER_SEC.
OriginalL'auteur anshu | 2012-10-05
Vous devez vous connecter pour publier un commentaire.
Pour des durées de deux heures, je ne serais pas trop inquiet au sujet de
clock()
, il est beaucoup plus utile pour la mesure de la sous-deuxième durées.Suffit d'utiliser
time()
si vous souhaitez que la durée réelle, quelque chose comme (dummy trucs fournis pour ce qui est manquante):qui génère:
OriginalL'auteur paxdiablo
clock
mesures le temps de calcul et de ne pas le wallclock temps. Puisque vous n'êtes pas l'exécution de la majorité de votre code sur le cpu, ce n'est pas le bon outil.OriginalL'auteur Jens Gustedt
gettimeofday()
fonction peut aussi être envisagée.La gettimeofday() la fonction doit obtenir l'heure actuelle, exprimée en secondes et microsecondes depuis l'Époque, et de les stocker dans la structure timeval pointé par tp. La résolution de l'horloge système est indéterminé.
Le calcul du temps écoulé dans un programme C en millisecondes
http://www.ccplusplus.com/2011/11/gettimeofday-example.html
temps de système peut également sauter quand un pays modifie son horaire, ou allumer/éteindre l'été en économisant du temps
OriginalL'auteur Jeyaram