¿Cuál es la diferencia entre el tiempo transcurrido y el procesado cuando se usa timeit.exe en Windows?

2

Estoy usando el timeitcomando que se proporciona como parte del Kit de recursos de Windows 2003 para medir el tiempo que lleva ejecutar tareas particulares. Se adjunta la salida de un proceso que estaba ejecutando, sin embargo, estoy confundido por la diferencia en los tiempos transcurridos y procesados. ¿Cuáles son estos, por qué son diferentes y cuál de los 2 proporciona una indicación de un reloj de pared real?

ingrese la descripción de la imagen aquí

CacahuetesMonkey
fuente

Respuestas:

4

Elapsed Timees la duración desde que se inició el proceso hasta el momento en que finalizó (tiempo de "reloj de pared real", como usted lo dice). Process Timees el tiempo que la CPU dedicó a calcular el proceso. Sin embargo, me sorprende que el tiempo de proceso sea mayor que el "tiempo real". ¿Quizás el proceso utilizó más de un núcleo y se resumieron los tiempos de proceso de todos los núcleos?

Ansgar Wiechers
fuente
Gracias Ansgar Estaba ejecutando el proceso usando 2 núcleos. Sin embargo, me cuesta entender por qué el tiempo de CPU, como lo llaman, tomaría más tiempo cuando se usan múltiples CPU o núcleos, teniendo en cuenta que el tiempo de proceso o CPU no toma en cuenta eventos como leer el archivo desde el disco duro, clics del mouse, etc. Pensé que el valor de la suma sería mucho menor ya que la tarea se extendió entre 2 núcleos en este ejemplo.
PeanutsMonkey
1
Cuando cada uno de los dos núcleos tarda 10 segundos para calcular los resultados, el tiempo de cálculo total ha sido de 10 segundos por dos, pero debido a que ambos cálculos se ejecutaron en paralelo, el cálculo tomó solo 10 segundos "en tiempo real". Si hubiera estado haciendo todo el cálculo en un solo núcleo, el tiempo de proceso seguiría siendo de 20 segundos, pero el tiempo transcurrido se habría duplicado de 10 a 20 segundos (porque los cálculos habrían tenido que hacerse uno tras otro).
Ansgar Wiechers
¿Cuándo es vital utilizar y entender el tiempo de proceso o CPU? Por ejemplo, el código que planeo ejecutar se implementará en un servidor que ejecuta una multitud de otros trabajos.
PeanutsMonkey
Le permite estimar (aproximadamente) los cuellos de botella. Ejemplos: process time << elapsed time=> el proceso está vinculado a E / S, es decir, no puede escalar utilizando CPU más o más rápidas. process time (1 core) ~= elapsed time=> el proceso está vinculado a la CPU, es decir, puede escalar utilizando una CPU más rápida (o tal vez más núcleos). process time (n cores) ~= elapsed time=> el proceso está vinculado a la CPU, pero no puede ser paralelo, es decir, solo puede escalar horizontalmente con una CPU más rápida, no con CPU / núcleos adicionales.
Ansgar Wiechers
Entonces, ¿qué pasa cuando el tiempo de proceso excede el tiempo transcurrido, es decir, no es menor o igual que el tiempo transcurrido?
PeanutsMonkey