我分析了一个使用std :: async,std :: future调用单独函数的c ++程序。
使用gperftools / profiler.h编译代码。 (插入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中的设置等)。