Profiler C++

16 views
Skip to first unread message

ari...@sardano.net

unread,
Jul 8, 2008, 11:56:42 PM7/8/08
to ccppb...@googlegroups.com
Oi pessoal!

Sei que o gprof faz o profile de arquivos diversos, mas para ANSI C, e
quanto ao C++, qual profile usar?

Grato,

Ricardo


André Tupinambá

unread,
Jul 9, 2008, 7:17:49 AM7/9/08
to ccppb...@googlegroups.com
Ricardo,

Eu recomendo utilizar o profiler do fabricante do seu processador,
tanto o VTune da Intel (gratuito para uso em open source), quanto o
CodeAnalyst da AMD são muito bons.

[]'s
André Tupinambá

Rodrigo Kumpera

unread,
Jul 9, 2008, 1:07:39 PM7/9/08
to ccppb...@googlegroups.com
O gprof gera ruído demais ao ponto de ser quase inútil. De preferencia a um profiler estatístico, como o oprofile, por exemplo.

On Wed, Jul 9, 2008 at 12:56 AM, <ari...@sardano.net> wrote:

P.

unread,
Jul 9, 2008, 1:08:09 PM7/9/08
to ccppbrasil
On 9 jul, 00:56, arie...@sardano.net wrote:
> Oi pessoal!
>
> Sei que o gprof faz o profile de arquivos diversos, mas para ANSI C, e
> quanto ao C++, qual profile usar?

gprof funciona com C e C++.

--
P.

Guedes

unread,
Jul 9, 2008, 3:01:39 PM7/9/08
to ccppb...@googlegroups.com
Desculpe-me pela ignorância, mas para serve um 'profile'?
Guedes.

Daniel Alves

unread,
Jul 9, 2008, 3:09:44 PM7/9/08
to ccppb...@googlegroups.com
Um profiler é um software que voce pode usar para analisar o funcionamento do teu programa em termos de performance.. te ajuda a identificar gargalos de performance, etc.
--
Daniel Alves

"I do not fear computers. I fear the lack of them."
                - Isaac Asimov

Hugo Parente Lima

unread,
Jul 9, 2008, 11:15:21 PM7/9/08
to ccppb...@googlegroups.com
Existem um profiler legal.... que infelizmente não lembro o nome...
por isso mesmo que estou postando esta mensagem.. para ver e alguém
lembra, hehe.

O profiler é composto por um módulo para o kernel (linux) e um
programa em GTK, o programa que você vai "profiliar" não precisa ser
executado em um ambiente especial como uma máquina virtual ou coisa do
tipo... vc mandava o programa em GTK começar a capturar estatisticas
e ia usando se programa... depois mandava ele parar e ele mostrava
estatísticas sobre cada função.

O mais legal é que como você roda o programa normalmente ele não sofre
nenhuma lentidão na hora de fazer o profile... ao contrário do que
acontece quando se roda o programa no valgrind/callgrind e cia.

--
Hugo Parente Lima
"Precisamos de mais gênios humildes no mundo, hoje somos poucos!"
JID: hu...@jabber.org

Guedes

unread,
Jul 10, 2008, 2:51:31 AM7/10/08
to ccppb...@googlegroups.com

Em Qui, 2008-07-10 às 00:15 -0300, Hugo Parente Lima escreveu:
> Existem um profiler legal.... que infelizmente não lembro o nome...
> por isso mesmo que estou postando esta mensagem.. para ver e alguém
> lembra, hehe.
>
> O profiler é composto por um módulo para o kernel (linux) e um
> programa em GTK, o programa que você vai "profiliar" não precisa ser
> executado em um ambiente especial como uma máquina virtual ou coisa do
> tipo... vc mandava o programa em GTK começar a capturar estatisticas
> e ia usando se programa... depois mandava ele parar e ele mostrava
> estatísticas sobre cada função.
>
> O mais legal é que como você roda o programa normalmente ele não sofre
> nenhuma lentidão na hora de fazer o profile... ao contrário do que
> acontece quando se roda o programa no valgrind/callgrind e cia.
Eu não entendo o resultado do valgrind, ou mesmo, os gráficos gerados
pelo 'KCacheGrind'.
Onde posso encontrar material para aprender interpretar os resultados?
Guedes.

Rodrigo Kumpera

unread,
Jul 10, 2008, 9:44:35 AM7/10/08
to ccppb...@googlegroups.com

P.

unread,
Jul 10, 2008, 4:17:10 PM7/10/08
to ccppbrasil
On 10 jul, 03:51, Guedes <billgue...@terra.com.br> wrote:
> Em Qui, 2008-07-10 às 00:15 -0300, Hugo Parente Lima escreveu:> Existem um profiler legal.... que infelizmente não lembro o nome...

> > O mais legal é que como você roda o programa normalmente ele não sofre
> > nenhuma lentidão na hora de fazer o profile... ao contrário do que
> > acontece quando se roda o programa no valgrind/callgrind e cia.
>
> Eu não entendo o resultado do valgrind, ou mesmo, os gráficos gerados
> pelo 'KCacheGrind'.
> Onde posso encontrar material para aprender interpretar os resultados?

Uma boa interface de usuário para o Valgrind é o Alleyoop.

--
P.

P.

unread,
Jul 10, 2008, 4:27:36 PM7/10/08
to ccppbrasil
Um profiler é um programa capaz de "instrumentar" outro programa com o
objetivo de construir seu perfil de execução.
"instrumentar" significa inserir em diversos pontos do programa
compilado instruções especiais que apóiam a construção desse perfil.

Um profiler de execução, por exemplo, insere ao longo do programa
instruções que contabilizam tempos, de modo a calcular, por exemplo,
quanto tempo uma certa chamada de função executou, ou quanto tempo da
execução total do programa é gasto dentro de uma determinada função.

O gcc instrumenta automaticamente o programa compilado quando você usa
os parâmetros -p ou -pg; o gprof é um programa que exibe o perfil da
aplicação a partir do arquivo de dados que ela gera após uma execução.

Um profiler de memória, por outro lado, acrescentaria informação de
controle a objetos alocados na free-store para detectar se algum
objeto é desalocado mais de uma vez, ou marcas suficiente pra traçar
se algum objeto é usado sem estar inicializado etc.

O Valgrind, um ás do software livre, é um profiler de memória; ele
abre um programa, decompila e recompila este programa para instrumentá-
lo, e então o executa para obter um perfil de uso da memória.

Referências:

http://en.wikipedia.org/wiki/Instrumentation_(computer_programming)
http://en.wikipedia.org/wiki/Profiler_(computer_science)

--
P.

Rodrigo Kumpera

unread,
Jul 10, 2008, 4:30:51 PM7/10/08
to ccppb...@googlegroups.com
Definição meio imprópria, já que profilers estatísticos não instrumentam o programa alvo, assim como alguns
que tem suporte via hardware.

2008/7/10 P. <pedro....@member.fsf.org>:

ari...@sardano.net

unread,
Jul 10, 2008, 8:12:53 PM7/10/08
to ccppb...@googlegroups.com
Oi André, verifiquei o site da Intel e baixei o vtune, enorme espero que
seja tão bom quanto o tamanho que ocupa em disco...rss

Também baixei o CodeAnalyst, alias achei bem enxuto (pequeno).

Algum desses dois que você recomendou é profile estatístico como indicou
o Rodrigo Kumpera?

Abraço,

Ricardo

André Tupinambá escreveu:

Guedes

unread,
Jul 10, 2008, 8:19:32 PM7/10/08
to ccppb...@googlegroups.com
Opa! Isto que estava procurando tempos atrás, uma interface GTK para LOG
do Valgrind.

André Tupinambá

unread,
Jul 10, 2008, 8:56:48 PM7/10/08
to ccppb...@googlegroups.com
Ricardo,

Tanto o VTune, quanto o CodeAnalyst, são muito bons, mas cada um só
funciona no processador do próprio fabricante.

Eu conheço mais o VTune e ele funciona dos dois modos, fazendo a
instrumentação para alguns casos (tipo o call tree) e usa métodos
estatísticos do processador para outros (tipo o número de instruções
executadas em cada função, de onde se calcula o tempo gasto).

Mas o legal desses profilers é que além dessas contas simples, ele
permite algumas estatísticas interessantes. Ele permite coisas como
verificar se o uso do cache está bom, ou dá dicas que você tem
problemas no brach prediction do processador. O VTune especificamente,
ainda consegue cruzar algumas informações como por exemplo, branch
prediction errors x instruções retiradas.

Divirta-se...

[]'s
André Tupinambá


2008/7/10 <ari...@sardano.net>:

Guedes

unread,
Jul 10, 2008, 9:18:07 PM7/10/08
to ccppb...@googlegroups.com
Muito Obrigado, agora consegui entender o conceito e funcionamento do
'profiler'.
Guedes.

Hugo Parente Lima

unread,
Jul 10, 2008, 9:35:09 PM7/10/08
to ccppb...@googlegroups.com
Lembrei o nome do profiles que eu falei que não lembrava, Sysprof
http://www.daimi.au.dk/~sandmann/sysprof/

2008/7/10 Guedes <billg...@terra.com.br>:

--

Rodrigo Kumpera

unread,
Jul 10, 2008, 9:57:56 PM7/10/08
to ccppb...@googlegroups.com
O vtune faz profiling estatístico.


2008/7/10 <ari...@sardano.net>:

Paulo Fogaça

unread,
Jul 11, 2008, 6:46:51 AM7/11/08
to ccppb...@googlegroups.com

Gianni Rossi

unread,
Jul 12, 2008, 3:42:08 PM7/12/08
to ccppb...@googlegroups.com
Imagino que seria dificil alguem estar usando, ja que foi lancado
apenas esta semana :-)

Mas eu mesmo ja pesquisei o assunto, conversei com o pessoal do trampo
e nos ja vamos fazer um teste para ver se vale a pena para subistituir
nossos XML-RPC (SOAP). O negocio parece ser muito bom!

Virgilio Fornazin

unread,
Jul 12, 2008, 3:46:53 PM7/12/08
to ccppb...@googlegroups.com
Eu uso uma solução parecida com essa que desenvolvi há algum tempo atrás, mas com algumas coisas a mais (classe de streaming própria, versionamento de conteúdo das mensagens para compatibilidade retroativa, etc)

Enfim, nunca mais escrevo protocolos ASCII para comunicação, a não seja que seja extremamente necessário.

Fica muito rápido e fácil de trabalhar, sem os famigerados find/split/strcpy/strcat...
Reply all
Reply to author
Forward
0 new messages