Я профилировал программу на c ++, которая использует std :: async, std :: future для вызова отдельных функций.
Скомпилировал код, используя gperftools / profiler.h.(Inserted ProfilerStart ("profile.prof"); сразу после main и ProfileStop () непосредственно перед возвратом)
Сгенерировал профиль с помощью
google-pprof --callgrind "program_path" profile.prof > prof.cg
Откройте формат callgrind с помощью
kcachegrind prof.cg
В профиле отображаются звонки с основной и тд.Единственная проблема заключается в том, что процент времени обработки для std :: future :: get является неправильным с огромным отрывом.
Если я использую,
google-pprof --gif "program_path" profile.prof > prof.gif
Я получаю правильные оценки времени обработки,
Любое исправление, заставляющее его работать в kcachegrind (настройки в google-pprof / kcachegrind gui и т. Д.).