Pregunta ¿Qué tan corto puede medir el tiempo (el programa Linux)?


Me pregunto cuáles son los límites para time son. Tengo un programa que siempre toma exactamente 20 ms, así que supongo que es el más bajo que puede medir, pero quiero ver si hay algún tipo de documentación de esto.


2


origen




Respuestas:


El intervalo de tiempo más corto que puede medir es 1 jiffy, que es el inverso de la frecuencia especificada en las opciones de compilación para el kernel (CONFIG_HZ).


3



¿Hay algún sitio web que lo mencione en alguna parte? - Brendan Long
time(1) lleva a times(2) que dice "Todos los tiempos informados están en ticks de reloj". en el DESCRIPCIÓN sección. A partir de ahí, eso lleva a páginas que hablan sobre HZ, pero esa configuración se vuelve obsoleta CONFIG_NO_HZ. Entonces ... no estoy seguro de a partir de allí. - Ignacio Vazquez-Abrams


Estoy de acuerdo con la respuesta de Ignacio, sin embargo, creo que se pierde un punto crítico. Aunque un jiffy es teóricamente la unidad más pequeña que puede medir, a veces las duraciones muy breves son inexactas porque el hardware subyacente no mide los cambios a tiempo tan rápidamente. En mi experiencia, cualquier cosa menor a un milisegundo no se puede comparar con precisión con otra cosa (aunque esa cifra podría ser tan alta como 5 o 10 milisegundos). Si está intentando comparar una operación o programa específico, considere ejecutarlo cientos o miles de veces y luego dividir ese tiempo total por el número de iteraciones para encontrar un valor más preciso.


3



En realidad, aunque el jiffy es software, el hardware subyacente lo hace mucho mejor. resolución grep / proc / timer_list - oylenshpeegul


Prueba esto:

gcc -o timetest -x c - <<< "int main() {}"; time ./timetest

En mi sistema (antiguo y lento), ejecuciones posteriores de:

time ./timetest

terminar en tan poco como:

real    0m0.005s
user    0m0.004s
sys     0m0.000s

1



Nota: Esto es según lo informado por el comando interno de Bash time. Utilizando /usr/bin/time solo informa a centésimas de segundo y dice "0.00". Los resultados de zsh construidos son similares. los ksh builtin muestra el tiempo más bajo (0.000 o 0.001 real). - Dennis Williamson