2010-10-25 4 views
2

J'essaie de comparer le temps d'exécution de l'un de mes scripts. Je reçois la sortie suivantePuzzling sortie de la commande de temps

#time ./foo.py 
real 0m37.883s 
user 1m0.648s 
sys  0m4.680s 
# 

En interne, foo engendre plusieurs autres processus et attend jusqu'à ce que tous meurent. À partir de cette thread et de ma compréhension antérieure des temps réel, utilisateur et sys, j'avais pensé que le temps réel serait au moins égal à l'heure de l'utilisateur. C'est parce que le temps réel est tout le temps écoulé depuis le début jusqu'à la fin (comprend également des tranches de temps utilisées par d'autres processus). Alors que le temps de l'utilisateur se compose uniquement du temps CPU passé dans le code en mode utilisateur dans le processus. Alors, comment le temps de l'utilisateur est-il plus grand que le temps réel ici? Est-ce parce que les temps utilisateurs de tous les processus enfants sont en quelque sorte ajoutés?

Répondre

2

L'heure réelle est parfois appelée heure de l'horloge murale. C'est le temps écoulé pendant l'exécution du programme. L'heure de l'utilisateur peut être plusieurs fois en temps réel si le code est multithread comme il semble que votre code est. Oui, cela revient à additionner le temps utilisateur pour les threads. un raisonnement similaire s'applique à l'heure du système.

Questions connexes