2016-05-09 4 views
2

Je suis en train d'essayer de profiler un système piloté par les callbacks CPU et je ne suis intéressé que par le profilage quand le rappel me fait réagir d'une certaine manière? Puis-je utiliser gperftools pour accomplir cela?Comment utiliser gperftools pour conditionner le code C++?

ProfilerEnable()/ProfilerDisable() semble prometteur mais l'en-tête dit que ceux-ci sont dépréciés. Je ne suis même pas sûr que cela fonctionnerait.

Répondre

1

En effet ProfilerEnable/Disable ne fonctionne plus.

Il existe déjà une demande de profilage de mise en pause/de mise en pause https://github.com/gperftools/gperftools/issues/597. Mais notez que cela est souvent susceptible d'avoir un impact sur les performances.

Je pense que vous devriez profiler l'ensemble de votre application, puis utilisez la fonction --focus de pprof pour filtrer les parties inintéressantes.

+0

Aliaksei Kandratsenka, comment il (ProfilerEnable/Disable) a été mis en œuvre et comment il a été brisé? – osgx

+0

Apparemment, il est utilisé pour bloquer le signal de profilage pour le filetage actuel. Mais puisque la livraison de SIGPROF est par processus depuis longtemps, ils sont maintenant des fonctions vides et ne font rien comme indiqué dans le commentaire. –

+0

"La livraison SIGPROF est par processus depuis longtemps" - est-ce (dans Linux moderne)? Y a-t-il un autre temporisateur d'intervalle qui peut être utilisé pour profiler des programmes? – osgx