Para comparar tempos de execução de scripts de entre diferentes conchas, algumas respostas SE sugerir o uso bashde 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 timenúmeros - os tempos de pré-carregamento dessas conchas eram irrelevantes para medir os tempos de execução foo.shsob 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 timepodem 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?