Estou investigando o bash pela primeira vez e quero tentar testar algum código para comparar diferentes maneiras de atingir o mesmo objetivo. Como parte disso, descobri os métodos de tempo e tempo para registrar o tempo de execução do código. Para um script simples de uma linha criado por meio de:
echo "echo a script" > script
Eu recebo:
$ time bash ./script
a script
real 0m0.009s
user 0m0.006s
sys 0m0.002s
$ times bash ./script
0m0.082s 0m0.074s
0m0.019s 0m0.041s
$ /usr/bin/time bash ./script
a script
0.00user 0.00system 0:00.00elapsed 80%CPU (0avgtext+0avgdata 3328maxresident)k
0inputs+0outputs (0major+148minor)pagefaults 0swaps
$ type -a time
time is a shell keyword
time is /usr/bin/time
time is /bin/time
$ type -a times
times is a shell builtin
$ which -a time
/usr/bin/time
/bin/time
bash -c help
me leva para:
$ help time
time: time [-p] pipeline
Report time consumed by pipeline's execution.
$ help times
times: times
Display process times.
E man time
me dá:
TIME(1)..........Manual de Comandos Gerais..........TIME(1)
Hora NAME - execute programas e resuma o uso de recursos do sistema
Os usuários do shell bash precisam usar um caminho explícito para executar o comando de tempo externo e não a variante interna do shell. No sistema onde o horário está instalado em /usr/bin, o primeiro exemplo seria
/usr/bin/time wc /etc/hosts
O manual de referência do bash descreve time
como uma palavra reservada que tem "um significado especial para o shell. Eles são usados para iniciar e terminar os comandos compostos do shell", enquanto times
é descrito como um comando interno do shell , "herdado do Bourne Shell. Esses comandos são implementados conforme especificado pelo padrão POSIX".
Além de uma linha no manual dizendo:
O uso de time como uma palavra reservada permite o tempo de componentes internos do shell, funções do shell e pipelines. Um comando de tempo externo não pode cronometrar isso facilmente.
Não consigo ver o raciocínio para três comandos muito semelhantes.
Qual devo usar para testar diferentes abordagens e otimizar meus scripts?