Usando Callgrind/Kcachegrind para obter estatísticas por thread
-
24-09-2019 - |
Pergunta
Eu gostaria de poder ver como cada tópico "caro" no meu aplicativo está usando o CallGrind. Eu perfilei com o --separate-thread=yes
Opção que fornece um arquivo CallGrind para o aplicativo inteiro e, em seguida, um por thread.
Isso é útil para visualizar o perfil de qualquer tópico, mas o que eu realmente quero é apenas uma lista classificada do tempo da CPU de cada thread para que eu possa ver quais threads são os maiores porcos.
Solução
Valgrind/CallGrind não permite esse comportamento. Nem KcacheGrind faz, mas acho que será uma boa melhoria. Talvez algumas respostas possam ser encontradas na lista de correspondência.
Um trabalho Mas realmente chato maneira poderia ser usar a opção --separate-thread=no
, e atualize seu código a ser usado para cada thread a diferente Nome da função ou nome da classe. Dependendo da sua complexidade do código, pode ser a resposta (usando 1Computedata (), 2Computedata (), ..)
Outras dicas
Basta abrir vários perfis em Kcachegrind ao mesmo tempo.