2012-04-22 5 views
28
$ time ./Test 

real 0m2.906s 
user 0m2.887s 
sys  0m0.017s 

Aquí es el código del programa:El significado de reales, el usuario, y sys en la producción de Linux comando time

#include <iostream> 
#include <map> 

void func_a() { 
    std::map<int, int> m; 
    for (unsigned int i = 0; i < 10000; i++) { 
     m.insert(std::pair<int, int>(i, i)); 
    } 
} 

void func_b() { 
    std::map<int, int> m; 
    for (unsigned int i = 0; i < 1000000; i++) { 
     m.insert(std::pair<int, int>(i, i)); 
    } 
} 

int main() { 
    func_a(); 
    func_b(); 
    return 0; 
} 
+0

[Aquí] [1] da una muy buena explicación. [1]: http://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1 – kzhong

Respuesta

29

Si se echa un vistazo en el manpage (man time), se indica:

El comando de tiempo ejecuta el comando de programa especificado con los argumentos dados. Cuando el comando finaliza, el tiempo escribe un mensaje en la salida estándar, dando estadísticas de tiempo sobre este programa. Estas estadísticas consisten en (i) el tiempo real transcurrido entre la invocación y la finalización, (ii) el tiempo de CPU del usuario (la suma de los valores tms_utime y tms_cutime en una estructura tms devuelta por los tiempos (2)), y (iii) el tiempo de CPU del sistema (la suma de los valores tms_stime y tms_cstime en una estructura tms devuelta por los tiempos (2)).

Básicamente, sin embargo, el tiempo user es el tiempo que el programa se ejecuta en la CPU, y el tiempo de sys fue el tiempo que el programa estaba esperando el sistema operativo para realizar tareas para ello. Si está interesado en la evaluación comparativa, user + sys es un buen momento para usar. real puede verse afectado por otros procesos en ejecución y es más inconsistente.

Cuestiones relacionadas