2012-03-09 3 views
3

J'utilise la commande de temps sur linux pour mesurer combien de temps mon programme a pris, et dans mon code que j'ai mis minuteries pour calculer le tempsPourquoi mon programme c a-t-il pris plus de temps que le temps calculé par lui-même?

time took calculated by program: 71.320 sec 

real 1m27.268s 
user 1m7.607s 
sys 0m3.785s 

Je ne sais pas pourquoi mon programme a pris du temps réel plus calculé, comment trouver la raison et la résoudre?

============================================== ========

Voici comment je calcule l'heure dans mon code;

clock_t cl; 
cl = clock(); 

do_some_work(); 

cl = clock() - cl; 
float seconds = 1.0 * cl/CLOCKS_PER_SEC; 
printf("time took: %.3f sec\n", seconds); 

Répondre

14

Il y a toujours en tête pour le démarrage du processus, à partir du moment de l'exécution, la fermeture du programme et le temps lui-même a sans doute aussi les frais généraux. En outre, dans un système d'exploitation multiprocessus, votre processus peut être «désactivé», ce qui signifie que d'autres processus sont exécutés pendant que le vôtre est en attente. Cela peut jouer avec les horaires aussi.

Laissez-moi vous expliquer la sortie du temps:

  • real signifie que le temps d'horloge réelle, y compris tous les frais généraux.
  • user est le temps passé dans le programme actuel.
  • sys est le temps passé par le système du noyau (la départissez je parlais tout à l'heure, par exemple)

Notez que user + sys est très proche de votre temps: 1m7.607s + 0m3.785s == 71.392s.

Enfin, comment avez-vous calculé l'heure? Sans cette information, il est difficile de dire exactement quel est le problème (le cas échéant).

+0

J'ai ajouté un exemple de code comment le temps a été calculé dans mon programme –

Questions connexes