Testando a intensidade da CPU de um único comando ou função

1

Existe um comando que é útil para fazer um teste de benchmark em um comando ou função separada; para ver como cpu intensivo é?

De preferência, algo semelhante a como você pode relatar a duração de um comando com time .

Por exemplo: eu tentei o seguinte código; antes de adicionar sleep 0.1 ; e enfatizou a CPU, os fãs entraram em alta velocidade, etc. Adicionando sleep 0.1 após cada printf pareceu mitigar o problema. E basicamente, estou apenas curioso para verificar a diferença:

spin ()
{
    i=0 
    sp='/-\|' 
    n=${#sp} 
    printf ' ' 
    sleep 0.1
    while true; do 
        printf '\b%s' "${sp:i++%n:1}" 
        sleep 0.1
    done
}

Fonte: link

    
por tjt263 31.03.2017 / 08:07

2 respostas

0

time fornece as informações! Ele informa quanto tempo o programa gastou como usuário (ou seja, uso da CPU) versus sistema (ou seja, entrada / saída). Um programa intensivo da CPU é aquele em que o tempo do usuário domina e o tempo do sistema é insignificante.

    
por 01.04.2017 / 02:47
0

Parece que existe uma builtin / palavra-chave time e um aplicativo separado, /usr/bin/ time . Parece que o primeiro tem precedência, então o caminho completo é necessário para o último.

(Aparentemente, isso foi muito abordado no passado, mas é a primeira vez que o encontro).

A funcionalidade básica é a mesma, mas a última pode fornecer informações adicionais sobre o uso da CPU e mais (especialmente com o sinal -v / --verbose ).

Enquanto o primeiro aceitará uma função como um operando, o segundo não o fará; a menos que seja analisado no contexto de um script. Então, é meio chato e um pequeno inconveniente, mas a única solução parece estar criando um novo script; declarando uma nova função & chamando, salvando, então:

/usr/bin/time -v ./newfunction.sh

Obrigado a todos que dedicaram tempo para escrever.

    
por 01.04.2017 / 13:31