j'ai trouvé un code sur la mesure du temps d'exécution ici http://www.dreamincode.net/forums/index.php?showtopic=24685temps d'exécution de mesure d'un appel à un système() en C++
Cependant, il ne semble pas fonctionner pour les appels au système(). J'imagine que c'est parce que l'exécution saute hors du processus actuel.
clock_t begin=clock();
system(something);
clock_t end=clock();
cout<<"Execution time: "<<diffclock(end,begin)<<" s."<<endl;
Puis
double diffclock(clock_t clock1,clock_t clock2)
{
double diffticks=clock1-clock2;
double diffms=(diffticks)/(CLOCKS_PER_SEC);
return diffms;
}
Cependant cela retourne toujours 0 secondes ... Y at-il une autre méthode qui fonctionne?
Aussi, c'est sous Linux.
Editer: Aussi, juste pour ajouter, le temps d'exécution est de l'ordre de quelques heures. Donc, la précision n'est pas vraiment un problème.
Merci!
appels système et les appels à la fonction du système() ne sont nullement la même chose. J'ai modifié et mis à jour pour refléter cela. –
Peut-être que l'appel système prend 0 secondes. Avez-vous essayé quelque chose de long exprès? –
Notez qu'il y a deux fonctions à mesurer: le temps pris par le processus et le temps réel pris en compte. 'getrusage' peut mesurer la première résolution en microsecondes. 'gettimeofday' peut mesurer le second en résolution de microseconde. Si votre processus dort (en attente sur l'entrée ..), 'getrusage' n'en tiendra pas compte, il ne prendra pas non plus en compte les temps pris par les autres processus. Donc je suppose que si la tâche est E/S, vous voulez 'gettimeofday', et si c'est lié à cpu, vous voulez' getrusage'. Pas sûr que ce soit la bonne façon. –