C++常用性能分析工具

top

1.无论你开发的是什么样的应用程序,敲个 top 命令,就能够简单直观地看到 CPU、内存等几个最关键的性能指标。top 展示出来的各项指标的含义都非常丰富。
2.一个是按“M”,看内存占用(RES/MEM),另一个是按“P”,看 CPU 占用,这两个都会从大到小自动排序,方便你找出最耗费资源的进程。另外,你也可以按组合键“xb”,然后用“<>”手动选择排序的列,这样查看起来更自由。

pstack

pstack 可以打印出进程的调用栈信息,有点像是给正在运行的进程拍了个快照,你能看到某个时刻的进程里调用的函数和关系,对进程的运行有个初步的印象。

strace

1.strace 可以显示出进程的正在运行的系统调用,实时查看进程与系统内核交换了哪些信息。
2.把 pstack 和 strace 结合起来,你大概就可以知道,进程在用户空间和内核空间都干了些什么。当进程的 CPU 利用率过高或者过低的时候,我们有很大概率能直接发现瓶颈所在。

perf

1.perf 可以说是 pstack 和 strace 的“高级版”,它按照固定的频率去“采样”,相当于连续执行多次的 pstack,然后再统计函数的调用次数,算出百分比。只要采样的频率足够大,把这些“瞬时截面”组合在一起,就可以得到进程运行时的可信数据,比较全面地描述出 CPU 使用情况。
2.常用的 perf 命令是“perf top -K -p xxx”,按 CPU 使用率排序,只看用户空间的调用,这样很容易就能找出最耗费 CPU 的函数。
3.总之,使用 perf 通常可以快速定位系统的瓶颈,帮助你找准性能优化的方向。

gperftools

1.Google Performance Tools。它是一个 C++ 工具集,里面包含了几个专门的性能分析工具(还有一个高效的内存分配器 tcmalloc),分析效果直观、友好、易理解,被广泛地应用于很多系统,经过了充分的实际验证。
2.gperftools 的性能分析工具有 CPUProfiler 和 HeapProfiler 两种,用来分析 CPU 和内存。不过,如果你听从我的建议,总是使用智能指针、标准容器,不使用 new/delete,就完全可以不用关心 HeapProfiler。
3.CPUProfiler 的原理和 perf 差不多,也是按频率采样,默认是每秒 100 次(100Hz),也就是每 10 毫秒采样一次程序的函数调用情况。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C++性能优化检测工具可以帮助开发人员分析和优化他们的代码,以提高程序的性能。以下是一些常用的C++性能优化检测工具: 1. Profilers(性能分析器):性能分析器可以帮助开发人员找到程序中的性能瓶颈。它们可以测量函数调用的时间、内存使用情况和其他指标,并生成性能报告。一些常用性能分析器包括GNU gprof、Valgrind和Intel VTune。 2. 编译器优化选项:大多数C++编译器都提供了一些优化选项,可以在编译时对代码进行优化。例如,GCC编译器提供了一系列的优化选项,如-O1、-O2和-O3,可以根据需求选择不同级别的优化。 3. 静态代码分析工具:静态代码分析工具可以检测代码中的潜在问题和性能瓶颈。它们可以帮助开发人员找到未使用的变量、内存泄漏和其他常见的错误。一些常用的静态代码分析工具包括Cppcheck和Clang Static Analyzer。 4. 动态内存分析工具:动态内存分析工具可以帮助开发人员检测内存泄漏和内存访问错误。它们可以跟踪程序运行时的内存分配和释放,并生成报告。一些常用的动态内存分析工具包括Valgrind和Dr. Memory。 5. 可视化性能分析工具:可视化性能分析工具可以以图形化的方式展示程序的性能数据,帮助开发人员更直观地理解和优化代码。一些常用的可视化性能分析工具包括Intel VTune和Google Performance Tools。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星火撩猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值