我使用gprof2dot
来分析我的应用程序:
./gprof2dot.py -f callgrind callgrind.out.x | dot -Tsvg -o output.svg
尽管如此,它给了我漂亮的图形分析,每个框中每个功能的名称都很长,远远超过了屏幕尺寸。由于boost库具有很高的模板使用率。只需看看其中一个函数名称:
std::reference_wrapper<boost::numeric::odeint::controlled_runge_kutta<boost::numeric::odeint::runge_kutta_dopri5, boost::numeric::odeint::default_error_checker<double, boost::numeric::odeint::range_algebra, boost::numeric::odeint::default_operations>, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag> > std::ref<boost::numeric::odeint::controlled_runge_kutta<boost::numeric::odeint::runge_kutta_dopri5, boost::numeric::odeint::default_error_checker<double, boost::numeric::odeint::range_algebra, boost::numeric::odeint::default_operations>, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag> >(boost::numeric::odeint::controlled_runge_kutta<boost::numeric::odeint::runge_kutta_dopri5, boost::numeric::odeint::default_error_checker<double, boost::numeric::odeint::range_algebra, boost::numeric::odeint::default_operations>, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag>&)
有没有办法去除名称空间和模板甚至函数的参数,使其在图形中看起来更小?
PS。图片非常大,我无法将其转换为png。我不知道您是否可以下载并打开此10MB图像(link)。
答案 0 :(得分:1)
./ gprof2dot.py有两个相关选项:
-s, --strip strip function parameters, template parameters, and
const modifiers from demangled C++ function names
-w, --wrap wrap function names
我个人更喜欢-w,因为我仍然可以分开模板。