Obtenha tempo de execução para dois programas simultaneamente

1

Eu estou tentando fazer um script de shell que poderia executar testes em dois programas diferentes simultaneamente e comparar seu tempo de execução para ver qual deles tem a melhor eficiência (os testes precisam ser automatizados por meio desse script)

Basicamente, eu queria saber se havia uma maneira de bifurcar em um script de shell e lançar simultaneamente meus dois programas para verificar seu tempo de execução e calcular a diferença

    
por rak007 15.05.2016 / 21:45

1 resposta

1

@ulrichschwarz está certo. Os testes de desempenho não devem executar ambos os processos paralelamente.

----

Você pode usar time , que é uma palavra-chave do shell.

Na minha caixa debian há também um binário no PATH que tem mais opções. Nesse caso, \time precisa ser usado para executar a versão binária.

Não existe fork explícito. Quero dizer, o shell faz tudo para você quando um programa é iniciado a partir da linha de comando ou de um script.

O shell inicia um programa em segundo plano quando & é adicionado no final da linha de comando: por exemplo, sleep 6 &

Se dois programas forem iniciados em segundo plano, eles estão sendo executados simultaneamente.

wait é um shell embutido. Quando usado sem parâmetro, o processo atual é suspenso para aguardar a finalização dos processos filhos atualmente ativos (em segundo plano).

Faça uma tentativa para isso:

realtime1=$(mktemp)
realtime2=$(mktemp)
\time -o "${realtime1}" -f "%e" sleep 5 &
\time -o "${realtime2}" -f "%e" sleep 10 &
wait
printf "Number of seconds used by program1: %s\n" $(cat "${realtime1}")
printf "Number of seconds used by program2: %s\n" $(cat "${realtime2}")

O teste:

$ bash script.sh
Number of seconds used by program1: 5.00
Number of seconds used by program2: 10.00
    
por 15.05.2016 / 22:16