Si su aplicación simplemente se ejecuta "completamente" (es decir, está usando CPU o esperando E/S) hasta que finaliza, y no hay otros procesos compitiendo, simplemente haga time myapp
(o quizás /usr/bin/time myapp
, que produce un poco salida diferente al shell incorporado).
Esto le dará algo como:
real 0m1.412s
user 0m1.288s
sys 0m0.056s
En este caso, el usuario sys + (kernel) representan el tiempo para casi todo el tiempo real y no es sólo 0.068s desaparecidos ... (probablemente el tiempo pasado cargando la aplicación y sus libs de soporte).
Sin embargo, si usted fuera a ver:
real 0m5.732s
user 0m1.144s
sys 0m0.078s
entonces su aplicación gastaron 4.51s no consumir CPU y presumiblemente bloqueado en IO. ¿Cuál es la información que creo que estás buscando?
Sin embargo, cuando esta técnica de análisis sencillo se descompone es:
- Aplicaciones que esperan en un temporizador/reloj u otro estímulo externo (por ejemplo aplicaciones GUI por eventos). No se puede distinguir el tiempo de espera en el reloj y el tiempo de espera en el disco/red.
- Aplicaciones multiproceso, que necesitan un poco más de pensamiento para interpretar los números.
tiempo + gprof + valgrind y amigos + oprofile – Tom
Digamos 'tiempo' dime que mi aplicación tarda 20 sec. ¿Cómo averigua valgrind cuánto tiempo gasto en procesar CPU VS cuánto tiempo en esos 20 segundos estoy inactivo? Entiendo que valgrind desglose el costo de cada función cuando la CPU está procesando. Quiero averiguar la relación entre el tiempo de procesamiento de la CPU VS tiempo de inactividad (esperar tráfico de red, llamadas IO, etc.). – richard