商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Ubuntu中C++程序如何进行性能分析

Ubuntu中C++程序如何进行性能分析

  发布于2026-07-19 阅读(0)

扫一扫,手机访问

在Ubuntu系统里给C++程序做性能分析,其实流程并不复杂,关键是用对工具、走对步骤。下面就把常用的几种方法拆开来讲,每条都附上实际命令,方便你直接上手。

  1. 编译程序:用g++编译时,记得加上几个关键标志。调试信息用-g,优化等级用-O2(当然也可以根据需求调整),这样既能保证分析时有符号信息,又能让代码跑得更快。举个栗子:

    g++ -g -O2 -o myprogram myprogram.cpp
  2. 选对分析工具:Ubuntu下有几种主流的性能分析工具,各有所长,可以根据场景选择。

    • gprof:经典老牌工具,基于采样。编译时加上-pg标志:

      g++ -g -pg -o myprogram myprogram.cpp

      运行程序后会自动生成gmon.out文件,然后用gprof解析:

      gprof myprogram gmon.out > analysis.txt
    • perf:Linux内核自带的性能分析利器,功能很强大。先安装(如果没装的话):

      sudo apt-get install linux-tools-common linux-tools-generic linux-tools-$(uname -r)

      perf record记录程序运行:

      sudo perf record -g ./myprogram

      生成perf.data后,用perf report查看报告,推荐加-g graph,0.5,caller参数,能展示调用链:

      sudo perf report -g graph,0.5,caller
    • Valgrind:内存检查和性能分析两不误。其中的callgrind专门做性能分析。安装:

      sudo apt-get install valgrind

      运行:

      valgrind --tool=callgrind ./myprogram

      生成callgrind.out.pid文件,可以用KCacheGrindQCachegrind可视化查看。

    • FlameGraph:火焰图是可视化性能瓶颈的绝佳方式。先克隆项目:

      git clone https://github.com/brendangregg/FlameGraph.git

      然后用perf采集数据并转换为火焰图格式:

      sudo perf record -F 99 -ag -- sleep 60sudo perf script | ./stackcollapse-perf.pl | ./flamegraph.pl > myprogram.svg

      生成的myprogram.svg用浏览器打开就能看到直观的火焰图。

  3. 分析报告:无论用哪种工具,最终都会给出函数调用次数、执行时间、热点函数等信息。重点关注那些调用次数多、耗时长的函数,它们就是需要优化的地方。

掌握这些步骤,你就能在Ubuntu下系统地对C++程序进行性能分析,快速定位瓶颈,优化效率。动手试试吧,实践出真知。

本文转载于:https://www.yisu.com/ask/26649000.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注