惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
博客园 - 【当耐特】
月光博客
月光博客
Vercel News
Vercel News
D
Docker
I
InfoQ
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
有赞技术团队
有赞技术团队
雷峰网
雷峰网
博客园 - 聂微东
小众软件
小众软件
Y
Y Combinator Blog
腾讯CDC
L
LangChain Blog
The GitHub Blog
The GitHub Blog
宝玉的分享
宝玉的分享
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
T
The Blog of Author Tim Ferriss

博客园 - 新西兰程序员

C++ 构造函数中的初始化参数列表initializer list C++中的线程thread,以及C++11中的std::atomic学习 Leetcode56 Merge Intervals 合并区间 -- C++实现 C++中的内存对齐 C++中的static关键字使用以及全局变量 C++17中的结构化绑定Structured Binding C++中的函数参数是指针类型, 是按值传递 C++中异常处理机制中的栈展开stack unwinding C++实现链表反转 C++17中新建一个类时,编译器默认生成的类成员函数 QT中的元对象系统 Leetcode 114 - 二叉树展开为链表 Leetcode65 有效数字 - 判断给定的字符串是否是一个有效数字 LettCode2289-Steps to Make Array Non-descreasing C#中的委托详解 C++中的std::function C++中的仿函数Functor C++中的const和constexpr异同比较 C++中的左值和右值,以及右值引用,移动语义 C++中传递参数是指针类型以及传入参数是指针的指针(**)详解 C++中GetTickCount函数学习 C++中以类的成员函数作为Windows callback函数需要设置成static函数 C#中的System.Security.SecureString学习 C++中的悬挂指针和野指针 C++中四种不同的对象生存方式(in stack, in heap, global, local static) C#中使用Parallel类来进行多线程并发编程 String类型转LPCTSTR -----理解C++中的字符串类型转换 C++中的虚函数和虚函数表 C++中基类指针指向派生类对象 数据结构 - 栈的学习
Linux中的性能分析工具 perf 来分析C++性能
新西兰程序员 · 2026-04-17 · via 博客园 - 新西兰程序员

perf - Performance Analysis Tools for Linux  -- 是Linux内核自带的性能分析工具,广泛用于监控系统性能,分析程序瓶颈和优化.. 它不仅能够捕获硬件事件(如 CPU周期,缓存命中/未命中), 还可以帮助开发者定位性能热点,支持用户态和内核态的全面分析.

perf通过访问Linux内核中的性能监控单元(PMU+), 采样和计数硬件事件. PMU专门用于监控硬件性能,  perf通过这些单元收集数据并分析性能. 另外,perf 还支持监控软件事件(如上下文切换,页面错误), 以及用户定义的跟踪点,增强了其分析能力.

最常用的一个命令是 perf stat     => stat应该是statictis的简写,就是统计分析,  常用的方法如下

1.  测量程序执行时间及性能指标

perf stat -d ./your_program

这里,./your_program是你想要分析的程序.  -d 选项是用来显示延迟统计信息

2. 只测量特定的性能事件

perf stat -e cycles,instructions,cache-misses  ./your_program

这里, -e 选项后面跟的是要监控的性能事件,如CPU周期数(cycles), 指令数(instructions) 和 缓存未命中数 (cache-misses)