callgrind 使用
来源:互联网 发布:php $a & 7 变量 编辑:程序博客网 时间:2024/05/18 01:47
一. Valgrind安装说明:
先从http://valgrind.org/上将安装包down下来(使用3.2.0及以上版本),然后进行安装:
./configure
make
make install (as "root" if needed)
二. 使用valgrind进行性能瓶颈定位:
1.先将服务器运行环境搭建好,确定服务器程序能正常运行及响应请求。
2.使用valgrind启动服务器进程:(关于valgrind相关详细的参数说明请见最末的附注)
valgrind --tool=callgrind --separate-threads=yes ./tcpd ./main.cfg
(说明:--tool=callgrind,表示使用valgrind提供的性能分析功能,--separate-threads=yes,表示是要查看多线程相关数据)
3.使用另一台服务器向WEB服务器发起请求,一般我们使用ab工具来做性能测试,如:/usr/local/apache2/bin/ab –c100 -n100960 http://10.1.164.18/adsview?c=www&l=QQ_Width3&log=off
4.在启动了valgrind的服务器上dump相关性能数据:
callgrind_control -d -w /usr/local/ads5/bin
(说明:callgrind_control会将所有的线程性能数据dump到/usr/local/ads5/bin目录下面,生成如callgrind.out.23159.1-06这样的文件。可以使用callgrind_control –h命令查看帮助。)
5.查看性能数据:
在dump文件所在的目录下,使用callgrind_annotate --inclusive=yes callgrind.out.23159.1-06命令即可进行查看:
在输出中就可以查看所调用的函数所使用的时间数字
如果要进一步查看某一个函数里又有哪些函数被调用,及调用的时间值,可以使用callgrind_annotate --inclusive=yes --tree=both callgrind.out.23159.1-06命令进行查看。
如在解析的业务处理的函数FindCtreativePlayContent中, snprintf函数占用了大部分的时间,就可以针对此函数进行优化。
三. 进行函数优化:
找到了我们要优化的函数,接下来就是进行代码优化,如在FindCtreativePlayContent中,我们使用memcpy函数来替代snprintf函数。下面是另一个函数优化前后的比较:
优化的方法很多,针对不同的业务,有不同的优化方法。
四. 优化后效果比较:
优化完了之后,可以通过ab的性能测试,测试性能是否有提升,也可以通过valgrind提供的性能数据,手工计算此函数性能是否有了提升。如可以计算优化函数在总的业务流程中所占用的时间比。
- callgrind 使用
- valgrind callgrind 使用
- centos下valgrind之callgrind使用
- 性能分析工具使用-callgrind+kcachegrind
- 性能分析工具使用 callgrind+kcachegrind
- 使用valgrind的callgrind工具进行多线程性能分析
- 使用valgrind的callgrind工具进行多线程性能分析
- valgrind&&callgrind
- Callgrind Format Specification
- 调用剖析 callgrind
- valgrind -callgrind 实例
- callgrind查看程序流程
- valgrind callgrind性能分析
- Valgrind callgrind profile 多线程程序 命令
- Callgrind: a call-graph generating cache and branch prediction profiler
- valgrind之callgrind工具进行多线程性能分析
- Callgrind:调用图生成缓存和分支预测分析器
- callgrind使用说明(一款可以生成c++或c运行堆栈性能的工具)
- ZOJ 3057 Beans Game题解
- 【bzoj4127】Abs 线段树+树链剖分
- Yalantis 那些动画效果很炫的 Android 及 iOS 开源项目
- excel表格/txt数据读取工具
- window.open关于浏览器拦截问题分析及解决方法
- callgrind 使用
- ANSI C Yacc grammar
- 安卓开发linux内核驱动
- android anr trace.txt文件 抓取
- 新增软件测试视频资料
- Github项目解析(三)-->Android内存泄露监测之leakcanary
- redis与Mysql数据库的同步
- JAVA加密解密之对称加密
- 2016前端学习规划