C语言性能剖析与瓶颈定位实战

📚 共计 30 章节
01
性能分析基础
什么是性能分析,为什么需要性能分析,常见指标(CPU、内存、IO、延迟)
入门核心概念
02
Profiling工具入门
gprof的安装与使用,生成调用图,分析热点函数
gprof调用图
03
深入gprof
gprof的局限性,采样与插桩的区别,解读输出报告
高级插桩
04
Perf工具详解
perf stat, record, report基本用法,硬件计数器解读
perf硬件计数
05
Perf高级技巧
perf top实时监控,annotate源码级分析,script自定义脚本
实时源码
06
Valgrind系列
Callgrind使用,生成调用图,分析函数调用次数与缓存命中率
Valgrind缓存
07
Valgrind内存检查
Memcheck检测内存泄漏、越界访问、使用未初始化内存
内存调试
08
Valgrind高级
Massif堆分析器,检测内存峰值与内存碎片
堆分析碎片
09
Google Performance Tools
gperftools的CPU Profiler与Heap Profiler使用
gperftools堆剖析
10
系统级监控
top, htop, vmstat, iostat, sar等工具的使用与解读
监控系统
11
火焰图入门
FlameGraph工具生成CPU火焰图,解读火焰图
火焰图可视化
12
火焰图进阶
生成内存火焰图、Off-CPU火焰图、热力图
内存Off-CPU
13
代码插桩技术
手动插入计时器,使用clock_gettime、gettimeofday
计时插桩
14
编译器优化
-O0到-O3的差异,-pg选项,-fprofile-generate与-fprofile-use
GCCPGO
15
循环优化
循环展开、循环交换、循环融合、循环分块
循环变换
16
内存优化
缓存行对齐、预取指令、减少缓存未命中
缓存预取
17
数据结构优化
选择合适的数据结构,避免伪共享,使用紧凑结构
伪共享紧凑
18
算法优化
时间复杂度分析,空间换时间策略,分治与动态规划
算法复杂度
19
并发与锁优化
锁竞争分析,使用原子操作,无锁数据结构
并发无锁
20
IO性能优化
缓冲IO与直接IO,异步IO,mmap与sendfile
IOmmap
21
网络性能优化
epoll与select对比,零拷贝技术,连接池
网络epoll
22
性能基准测试
使用Google Benchmark编写微基准测试,统计显著性
基准Google
23
性能回归测试
集成性能测试到CI/CD,使用perf diff比较版本
CI/CD回归
24
多线程Profiling
使用Intel VTune或perf分析多线程程序,识别锁竞争
VTune多线程
25
GPU性能分析
CUDA Profiling基础,使用nvprof与Nsight Systems
CUDAGPU
26
嵌入式性能分析
资源受限环境下的性能分析,使用ARM DSTREAM
嵌入式ARM
27
性能建模与预测
Amdahl定律,Little定律,排队论基础
建模定律
28
性能调优案例1
数据库查询优化,从SQL到C扩展
案例数据库
29
性能调优案例2
视频编解码器优化,SIMD指令集应用
SIMD编解码
30
性能调优案例3
网络服务器优化,从单线程到Reactor模式
Reactor服务器