medindo microssegundos que um processo é executado no Linux

1

Estou procurando obter o número de microssegundos que um processo leva para ser executado. Alguém sabe como fazer isso em um sistema Linux? (Estou procurando um valor de tempo mais preciso do que milissegundos, porque estou medindo algo muito sensível.)

NOTA: Eu não acho que o comando de tempo funcionará com a precisão que eu estou procurando ... parece ir apenas para milissegundos, o que não é bom o suficiente para os meus propósitos

    
por John Kube 05.04.2010 / 05:43

3 respostas

1

Você deve dar uma olhada no PAPI . btw, é uma questão semelhante.

    
por 05.04.2010 / 06:11
2

Você não diz se esse é o seu próprio código e quer tempo para uma parte dele internamente. Você também não diz o que está realmente tentando realizar.

Uma coisa que você pode estar fazendo é executar algum programa no shell. Nesse caso, a maneira mais direta é cronometrar um ciclo de várias chamadas ao processo e fazer as contas.

Bash:

t=($({ time -p for i in {1..1000000}; do some_prog; done; } 2>&1))
echo "scale=6;${t[1]}/1000000" | bc

Se o seu comando date (e sistema) suportar nanossegundos e você não se importar com a sobrecarga:

begin=$(date +%s.%N); some_prog; end=$(date +%s.%N); echo "scale=6; $end - $begin" | bc
    
por 05.04.2010 / 06:57
0

times(2) retorna os tempos do processo em momentos, não em hora. Como tal, só pode medir unidades de tempo tão finamente quanto a frequência do seu kernel. clock_gettime(2) pode fazer resoluções melhores se o kernel for compilado corretamente, mas não há uma interface de usuário fácil para ele.

    
por 05.04.2010 / 06:11

Tags