我们的服务器项目有好几万行代码,昨天想分析一下其性能瓶颈,看看有没可优化的地方。

gcc 提供了 __PRETTY_FUNCTION__ 宏,放在哪个函数体内,就表示哪个函数的名字,和 __LINE__ 类似。利用这个宏,我们可以向每个函数体内插入几行代码,记录下被调用的 Log。

我用 Python 写了一个脚本,分析所有 .cpp 文件中的 function,在函数体前面加上三行代码 :

    #if __FUNC_CALL_LOG__LOGOUT("FUNC CALL : %s\n", __PRETTY_FUNCTION__);#endif

除此之外,还有写一个去掉所有分析代码的方法。

大约 100 行 Python 代码就可以把功能做出来,试了下,达到了预期效果。剩余的事情就是利用 Python 分析服务器产生的 Log,看看哪些函数被调用次数最多,寻找优化的办法。

转载于:https://www.cnblogs.com/liutengda/p/4446890.html

一个简易的C++性能分析工具相关推荐

  1. php轻量级的性能分析工具xhprof的安装使用

    之前一直使用基于Xdebug进行PHP的性能分析,对于本地开发环境来说是够用了,但如果是线上环境的话,xdebug消耗较大,配置也不够灵活,因此线上环境建议使用xhprof进行PHP性能追踪及分析. ...

  2. 正确使用 Android 性能分析工具——TraceView

    前面唠叨 最近公司app中有些列表在滑动的时候会有卡顿现象,我就开始着手解决这些问题,解决问题之前首先要分析列表滑动的性能瓶颈在什么地方.因为之前不会正确使用TraceView这个工具,主要是看不懂T ...

  3. php性能分析工具 - xhprof的安装使用

    一.前言 有用的东西还是记录下来吧,也方便以后的查询:这次记录一下xhprof的安装使用: xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低, ...

  4. 性能分析工具 Android TraceView

    1. TraceView 简介 Traceview是android平台配备一个很好的性能分析的工具.它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到每个方法的执行时间 Tracev ...

  5. 性能分析工具GpProfile

    性能分析工具GpProfile 简介 两年前在我的机器还是AMD K6 233和128M内存的时候,我曾经尝试用JBuilder和JDK 1.2编译运行过的最复杂的Java程序是Hello World ...

  6. 正确使用Android性能分析工具——TraceView

    原址 前面唠叨 最近公司app中有些列表在滑动的时候会有卡顿现象,我就开始着手解决这些问题,解决问题之前首先要分析列表滑动的性能瓶颈在什么地方.因为之前不会正确使用TraceView这个工具,主要是看 ...

  7. Android APP性能分析工具大全

    目录 官方推荐工具 第三方工具 一,官方工具 1.1,TraceView 1.2,StrictMode 1.3,Systrace 1.4,Hierarchy Viewer 1.5,AndroidStu ...

  8. Linux性能分析工具详解

    Linux性能分析工具详解 一.tcpdump 常用用法: 这里用sudo因为当前帐号无权使用tcpdump,这里仅以一个tcp的例子来说明:sudo /usr/sbin/tcpdump tcp po ...

  9. Keepfast 是前端一个性能分析工具

    简介 Keepfast 是一个性能分析工具,能够分析网站的资源构建性能和页面性能,生成性能报告并提供优化建议,让性能监控更方便. 主要特性: 分析并生成构建性能报告,可直观的对比两个版本的构建性能,以 ...

  10. php mysql 网站性能分析工具_如何使用工具进行线上 PHP 性能追踪及分析?

    工作了一两年的 PHPer 大概都多多少少知道一些性能分析的工具,比如 Xdebug.xhprof.New Relic .OneAPM.使用基于 Xdebug 进行 PHP 的性能分析,对于本地开发环 ...

最新文章

  1. 『并发包入坑指北』之阻塞队列
  2. linux下查看GPU版本和详情信息 CUDA版本信息 anaconda版本信息
  3. xml信息管理系统_WPF信息管理系统项目实战教程二:使用XAML实现页面布局
  4. 为什么计算机模拟不了人脑,为什么计算机永远不会拥有人类的意识?听完科学家的解释恍然大悟...
  5. 学习进度条(第三周)
  6. 中文URL是否有利于网站SEO
  7. 15crmo焊接后多长时间探伤_承压设备渗透探伤检测方法简单操作思路
  8. 神经网络模型遇到瓶颈?这些Tricks让你相见恨晚!
  9. 简单入门Javascript正则表达式
  10. Java StringBuilder reverse()方法与示例
  11. mysql数据库引擎InnoDB和MyISAM
  12. 计算机东大计算机三在线作业,东大16秋学期《计算机基础》在线作业3
  13. 取消Windows操作系统中自动播放
  14. ISDN-PRI,1号,7号信令的基础知识
  15. Java静态代理详解
  16. 推荐一个图片在线生成链接的网站
  17. Win10 企业版ltsc 无法访问samba网络共享问题及解决!(转)
  18. 【蓝桥杯技巧篇】处理日期相关问题详解
  19. 【C++】Clang-Format:代码自动格式化(看这一篇就够了)
  20. PCB设计--时钟线要求和布线

热门文章

  1. 让Android虚拟手机快速启动
  2. 网页制作,改变你的思维方式
  3. nginx报错unknown directive 锘? in D:\nginx/conf/nginx.conf:3
  4. centos7查看设置IP地址
  5. 查找算法之六 哈希查找(C++版本)
  6. java登录验证用重定向_使用filter进行登录验证,并解决多次重定向问题
  7. python调用文件可以干嘛_Python完成读取并保存文件类的详细介绍
  8. java 打印 型比卡丘_Java_总结三(选择与循环)
  9. php中的str replace,PHP字符串替换str_replace()函数4种用法详解
  10. feign调用https接口_SpringCloudFeign远程调用