C++ 剖面图c和x2B+;性能良好的程序
我是Ubuntu 16.04用户。 对于评测C++ 剖面图c和x2B+;性能良好的程序,c++,profiling,profiler,perf,C++,Profiling,Profiler,Perf,我是Ubuntu 16.04用户。 对于评测c++程序,我使用perf工具。所以我跑: perf record ./myprogram myprogram_args perf report 现在作为输出,我有: 14,52% CSim2Sim libsimgrid.so.3.13.90 [.] lmm_solve 4,40% CSim2Sim libsimgrid.so.3.13.90 [.] lmm_update_modified_set_rec 4,05%
c++
程序,我使用perf
工具。所以我跑:
perf record ./myprogram myprogram_args
perf report
现在作为输出,我有:
14,52% CSim2Sim libsimgrid.so.3.13.90 [.] lmm_solve
4,40% CSim2Sim libsimgrid.so.3.13.90 [.] lmm_update_modified_set_rec
4,05% CSim2Sim libc-2.23.so [.] _int_malloc
3,30% CSim2Sim libsimgrid.so.3.13.90 [.] simgrid::surf::Model::next_occuring_event_lazy
2,19% CSim2Sim libc-2.23.so [.] _int_free
........................................................................
我只看到程序中的“深度”和库调用。如何从perf获取与此模板类似的报告?(大概是这样的):
从过去到,最后到
带有性能注释的源代码级分析…
如果应用程序是用-ggdb编译的,perf annotate可以生成源代码级别的信息。下面的代码段显示了在使用此调试信息编译时noploop的相同执行的更多信息输出 因此,使用option编译(可能还有链接?)应该可以做到这一点 然后,您可以使用收集运行时信息,然后使用
perf annotate
对其进行分析
我刚刚找到了这个答案。如果您想获取调用图信息,建议使用gcc的选项
-fno省略帧指针
。因此,根据您想要实现的目标和优化级别,您可能也需要添加此选项。我还建议使用。通过将-pg
(可能还带有-O
…)传递到gcc
和/或g++
(可能更改Makefile
中的一些CFLAGS
或cxflags
)来编译C(或C++)程序。阅读关于GCC的文章。可能,您需要编译并链接选项-g
@OlafDietsche我已经试过了,但一切都一样=(您试过了吗?
4,52% CSim2Sim my_function1(int argc, char* argv[])
3,52% CSim2Sim my_function2(int argc, char* argv[])
3,52% CSim2Sim my_function3(int argc, char* argv[])
1,52% CSim2Sim my_function4(int argc, char* argv[])