Para comparar los tiempos de ejecución de los scripts entre diferentes shells, algunas respuestas de SE sugieren usar bashel comando incorporado de la siguiente time manera:
time bash -c 'foo.sh'
time dash -c 'foo.sh'
... etc , para cada shell para probar. Tales puntos de referencia no logran eliminar el tiempo tomado para cada shell para cargar e inicializar sí . Por ejemplo, suponga que los dos comandos anteriores se almacenaron en un dispositivo lento con la velocidad de lectura de un disquete anterior , (124KB / s), dash(un ejecutable de ~ 150K ) se cargaría aproximadamente 7 veces más rápido que bash( ~ 1M ), el shell el tiempo de carga sesgaría los timenúmeros: los tiempos de precarga de esos proyectiles son irrelevantes para medir los tiempos de ejecución foo.shdebajo de cada proyectil después de cargar los proyectiles.
Cuál es la mejor util portátil y en general a una duración de tiempo de la escritura que se pueden ejecutar desde dentro de cada capa? Entonces, el código anterior se vería así:
bash -c 'general_timer_util foo.sh'
dash -c 'general_timer_util foo.sh'
NB: no hay comandos integrados de shell time, ya que ninguno es portátil o general.
Mejor aún si la utilidad también es capaz de comparar el tiempo que tardan los comandos internos y las canalizaciones de un shell, sin que el usuario tenga que envolverlos primero en un script. La sintaxis artificial como esta ayudaría:
general_timer_util "while read x ; do echo x ; done < foo"
Algunos proyectiles timepueden manejar esto. Por ejemplo bash -c "time while false ; do : ; done"funciona. Para ver qué funciona (y qué no) en su sistema, intente:
tail +2 /etc/shells |
while read s ; do
echo $s ; $s -c "time while false ; do : ; done" ; echo ----
done
/usr/bin/time?