Linux 下 profile 技巧
2015-09-17 19:07
555 查看
Linux 下 profile 技巧
用 profiler 来查看程序最耗时的部分, 以便在正确的地方优化是很重要的.zoom
一个图形化的 profiler, 非常简单, 而且好用, 入门教程, 注意编译的时候加上 ‘-O2 -g’ 参数以开启优化并保留符号列表. 最简单的用法就是启动 zoom 后点击 start, 然后马上运行你要 profile 的程序, 程序运行结束后点击 stop. profile 结果显示为 tree 型, 每个函数的执行时间和其调用关系都显示的很清楚, 还可以看源代码和汇编代码, 并给出优化提示.
Gprof
编译参数(CXXFLAGS)和链接参数(LDFLAGS)都加上 “-pg” 标志;
正常运行程序, 速度比没加 -pg 参数时慢, 默认会输出一个 gmon.out 文件
运行 gprof, 以第二步程序的可执行文件作为其参数, 重定向输出:
$ gprof myprog > profile.txt
分析 profile.txt 文件, profile.txt 文件中包含两个表: flat profile, call graph. flat profile 显示的是每个函数的总共执行时间和调用次数等信息. call graph显示的时函数调用关系和时间, 在做优化时非常有用.
valgrind 工具集
memcheck: 检测内存泄露, 编译时加 -g 参数并且不要开启 -O 优化. valgrind 默认工具就是 memcheck.
valgrind --leak-check=yes myprog arg1 arg2
出错信息查询: http://valgrind.org/docs/manual/mc-manual.html#mc-manual.errormsgs
cachegrind: 分析程序 cache 命中和分支预测情况, 使用这个工具时最好打开 -O 优化.
valgrind --tool=cachegrind --branch-sim=yes prog
详细信息会输出到
cachegrind.out.<pid>文件中, 可由
--cachegrind-out-file选项改变输出文件. 然后用
cg_annotate --auto=yes <filename>
分析输出文件. 也可以使用图形化工具 KCachegrind.
callgrind
--tool=callgrind使用 -g -O2 参数
massif
profile heap memory, 用 massif-visualizer查看图形化结果.
perf
Linux 自带的性能分析工具。
perf list列出采样事件
perf stat [<options>] [<command>]
perf stat [<options>] [-p pid] | [-t tid]以非常精简的方式列出程序运行的整体数据,包括 page faluts, branch misses,cpu利用率,进程切换次数等。可以针对已运行的进程和线程。
perf top监控系统所有进程
perf record – e cpu-clock – g [<command>]统计程序各个部分的运行事件
perf report生成
perf record命令的结果报表
gcov
相关文章推荐
- 详解SQL Server 2008工具SQL Server Profiler
- MSSQL 开发经典
- firePHP
- 【转】S3C2410下WinCE6.0的启动过程详解
- Profiler 工具比较
- [WPF] Finding Memory Leaks in WPF-based applications
- 代码优化方案
- SQL Server Profiler 跟踪监控
- 关于Profile的系列文章(-)
- 关于Profile的系列文章(二)
- Java的内存泄漏
- .NET Tools
- 一些基本的 SQL 运用
- 优化系统Performance小记
- JAVA系统中内存泄露测试方法的研究(转)
- 使用gprof分析程序(转贴)
- 用Eclipse & plug-in开发j2ee
- Profile的作用
- [翻译]High Performance JavaScript(030)
- [翻译]High Performance JavaScript(031)