首页
README.md
0.前言 Preface
0-1.通告
0-2.前言
0-3.致谢
1.介绍 Introduction
1-0.介绍
1-1.为什么需要性能调优?
1-2.谁需要性能调优?
1-3.什么是性能分析?
1-4.本书讨论了什么?
1-5.本书未涉及的内容
1-6.练习
1-7.章节总结
2.性能测量 Measuring-Performance
2-0.性能测量
2-1.现代系统中的噪声
2-2.在生产环境中进行性能测量
2-3.自动检测性能回归
2-4.本地性能测量
2-5.软件和硬件定时器
2-6.微基准测试
2-7.问题和练习
2-8.章节总结
3.CPU微体系结构 CPU-Microarchitecture
3-0.CPU微体系结构
3-1.指令集架构
3-2.流水线技术
3-3.开发指令级并行性
3-4.SIMD
3-5.开发线程级并行性
3-6.存储器层次结构
3-7.虚拟内存
3-8.现代CPU设计
3-9.性能监控单元
3-10.问题和练习
3-11.章节总结
4.性能分析中的术语和指标 Terminology-And-Metrics
4-0.性能分析中的术语和指标
4-1.已退役和已执行指令
4-2.CPU利用率
4-3.CPI 和 IPC
4-4.微操作
4-5.管道槽
4-6.核心周期与参考周期
4-7.缓存失效
4-8.错误预测的分支
4-9.性能指标
4-10.内存延迟和带宽
4-11.案例研究:分析四个基准测试的性能指标
4-15.问题和练习
4-16.章节总结
5.性能分析方法 Performance-Analysis-Approaches
5-0.性能分析方法
5-1.代码插桩化
5-2.跟踪
5-3.工作负载特征化
5-4.使用标记器 API
5-5.采样
5-6.Roofline 性能模型
5-7.静态性能分析
5-8.编译器优化报告
5-9.问题和练习
5-10.章节总结
6.CPU特性用于性能分析 CPU-Features-For-Performance-Analysis
6-0.CPU特性用于性能分析
6-1.自顶向下微架构分析
6-2.TMA在英特尔处理器上
6-3.TMA在AMD处理器上
6-4.TMA 在 ARM 处理器上
6-5.TMA 总结
6-6.分支记录机制
6-7.基于硬件的采样功能
6-8.问题和练习
6-9.章节总结
7.性能分析工具概述 Overview-Of-Performance-Analysis-Tools
7-0.性能分析工具概述
7-1.Intel Vtune
7-2.AMD uProf
7-3.Apple Xcode Instruments
7-4.Linux Perf
7-5.火焰图
7-6.Windows 事件跟踪
7-7.专业和混合性能分析器
7-8.持续性能分析
7-9.问题和练习
7-10.章节总结
8.优化内存访问 Optimizing-Memory-Accesses
8-0.源代码优化
8-1.优化内存访问
8-2.缓存友好数据结构
8-3.显式内存预取
8-3.内存分析
8-4.减少 DTLB 未命中
8-5.问题与练习
8-6.章节总结
9.优化计算 Optimizing-Computations
9-0.优化计算
9-1.数据流依赖
9-2.内联函数
9-3.循环优化
9-4.向量化
9-5.使用编译器内部函数
9-6.问题和练习
9-7.章节总结
10.优化分支预测 Optimizing-Branch-Prediction
10-0.优化分支预测
10-1.用查找表替换分支
10-2.用算术替换分支
10-3.用谓词替换分支
10-4.问题和练习
10-5.章节总结
11.机器代码布局优化 Machine-Code-Layout-Optimizations
11-1.机器代码布局优化
11-2.基本块
11-3.基本块布局
11-4.基本块对齐
11-5.函数拆分
11-6.函数重排序
11-7.基于性能分析引导的优化(PGO)
11-8.减少 ITLB 未命中
11-9.案例研究:测量代码足迹
11-10.问题和练习
11-11.章节总结
12.其他优化领域 Other-Tuning-Areas
12-0.其他优化领域
12-1.优化输入输出
12-3.架构特定优化(todo)
12-4.低延迟优化技术
12-5.缓慢的浮点运算
12-6.系统调优
12-7.案例研究:对最后一级缓存大小的敏感性
12-8.问题和练习
12-9.章节总结
13.优化多线程应用 Optimizing-Multithreaded-Applications
13-0.优化多线程应用
13-1.性能扩展和开销
13-2.并行效率指标
13-3.使用 Intel VTune Profiler 进行分析
13-4.使用 Linux Perf 进行分析
13-5.使用 Coz 进行分析
13-6.利用 eBPF 和 GAPP 进行分析
13-7.缓存一致性问题
13-8.问题和练习
13-9.章节总结
14.软件和硬件性能的当前和未来趋势 Current-And-Future-Trends
14-0.软件和硬件性能的当前和未来趋势
15.后记 Epilog
15-0.后记
16.术语表 Glossary
16-0.术语表
17.主要CPU微架构列表 List-of-Uarch-ISA
17-0.主要CPU微架构列表
18.附录 Appendix
附录 A
附录 B
附录 C
附录 D
引用
References
本書使用 GitBook 釋出
9-7.章节总结
章节总结
章节总结
低效的计算是现实世界应用程序中瓶颈的重要部分。现代编译器通过执行许多不同的代码转换,非常擅长消除不必要的计算开销。尽管如此,我们仍然有很大的机会做得比编译器提供的更好。
在 [@sec:CoreBound] 中,我们展示了如何通过强制某些代码优化来搜索程序中的性能提升空间。我们讨论了诸如函数内联、循环优化和向量化等流行的转换。
results matching "
"
No results matching "
"