La signification de real, user et sys dans la sortie de la commande Linux time

$ time ./Test real 0m2.906s user 0m2.887s sys 0m0.017s 

Voici le code du programme:

 #include  #include  void func_a() { std::map m; for (unsigned int i = 0; i < 10000; i++) { m.insert(std::pair(i, i)); } } void func_b() { std::map m; for (unsigned int i = 0; i < 1000000; i++) { m.insert(std::pair(i, i)); } } int main() { func_a(); func_b(); return 0; } 

Si vous regardez la page de man time ( man time ), elle indique:

La commande time exécute la commande de programme spécifiée avec les arguments donnés. Lorsque la commande est terminée, le temps écrit un message sur la sortie standard en fournissant des statistiques de synchronisation concernant l’exécution de ce programme. Ces statistiques consistent en (i) le temps réel écoulé entre l’appel et la fin, (ii) le temps CPU de l’utilisateur (la sum des valeurs tms_utime et tms_cutime dans une structure tms renvoyée par les heures (2)), et (iii) le temps CPU du système (sum des valeurs tms_stime et tms_cstime dans une structure tms renvoyée par times (2)).

En gros, le temps d’ user est la durée d’exécution de votre programme sur le processeur, et le temps sys était la durée pendant laquelle votre programme attendait que le système d’exploitation exécute des tâches pour lui. Si vous êtes intéressé par l’parsing comparative, user + sys est un bon moment pour l’utiliser. real peut être affecté par d’autres processus en cours d’exécution et est plus incohérent.