Para comparar tempos de execução de scripts de entre diferentes conchas, algumas respostas SE sugerir o uso bash
de alto- time
comando, assim:
time bash -c 'foo.sh'
time dash -c 'foo.sh'
... etc , para cada shell testar. Esses benchmarks falham em eliminar o tempo necessário para cada shell carregar e inicializar a si próprio . Por exemplo, suponha que ambos os comandos acima foram armazenados em um dispositivo lento com a velocidade de leitura de um disquete inicial (124KB / s), dash
(um executável de ~ 150K ) carregaria cerca de 7x mais rápido que bash
( ~ 1M ), o shell o tempo de carregamento distorceria os time
números - os tempos de pré-carregamento dessas conchas eram irrelevantes para medir os tempos de execução foo.sh
sob cada concha após o carregamento das conchas.
Qual é a melhor util portátil e geral para correr para o sincronismo script que pode ser executado a partir de dentro de cada shell? Portanto, o código acima seria algo como:
bash -c 'general_timer_util foo.sh'
dash -c 'general_timer_util foo.sh'
NB: no shell built-in time
comandos, uma vez que nenhum são portáteis ou geral.
Melhor ainda, se o utilitário também puder avaliar o tempo gasto pelos comandos e pipelines internos de um shell, sem que o usuário precise primeiro envolvê-los em um script. Sintaxe artificial como esta ajudaria:
general_timer_util "while read x ; do echo x ; done < foo"
Algumas conchas time
podem gerenciar isso. Por exemplo bash -c "time while false ; do : ; done"
funciona. Para ver o que funciona (e não funciona) no seu sistema, tente:
tail +2 /etc/shells |
while read s ; do
echo $s ; $s -c "time while false ; do : ; done" ; echo ----
done
/usr/bin/time
?