Em algumas situações, necessitamos saber qual parte do nosso código consume mais tempo de CPU para poder saber onde otimizá-lo e tornar o programa mais rápido. Para isso podemos usar o GNU gprof, que é um utilitário para análise de dados de execução.

O processo como um todo envolve três passos:

  1. Compile seu código com a opção -pg
  2. Execute seu código normalmente, isso vai gerar um arquivo chamado gmon.out no diretório de execução do programa (se seu programa faz alguma mudança de diretório o gmon.out será gerado no último diretório).
  3. Finalmente, execute o comando
gprof executavel > relatorio.out

O comando acima irá gerar um relatório com estatísticas de execução das diversas funções de seu programa.

  %   cumulative   self              self     total
 time   seconds   seconds    calls   s/call   s/call  name
 95.97    148.37   148.37  1752000     0.00     0.00  func1
  2.02    151.49     3.12        1     3.12   154.42  MAIN__

Vamos dar um exemplo mais completo. Digamos que seu arquivo fonte esteja em /home/joao/fontes/main.f e você está usando o ifort (se estiver usando o gfortran, basta substituir o ifort por gfortran no comando abaixo) . Então o procedimento deve ser o seguinte:

    1. Compile seu fonte com o comando:
ifort -O3 -pg -o main main.f
    1. Execute o programa normalmente
    ./main
    1. Gere o relatório com o comando
 gprof ./main  >relatorio.out

Você pode agora visualizar o relatório com seu editor de textos preferido ou com algum outro comando como o cat ou more.

O gprof tem muitas opções, você pode aprender sobre elas com o comando man gprof ou nessa página
http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html

Deixe um Comentário

*