1.4 本书的主要内容

本书主要是为了帮助开发者理解他们所开发的应用程序的性能表现,学会寻找并去除低效代码。“为何自己写的归档工具比传统方法慢很多?为何对函数的修改引起了性能劣化?客户在抱怨程序很慢,但你不知道该从哪里入手才能解决?是否已经充分优化了程序?对于缓存未命中和分支预测错误问题,应该做些什么?”希望读完本书之后,你能得到这些问题的答案。

以下是本书内容概要:

第2 章讨论如何开展性能实验及分析实验结果,介绍性能测试和对比结果的最佳实践。

第3、4章介绍CPU微架构的基本知识和性能分析相关术语,如果你已经熟悉这些知识,可以跳过。

第5 章探讨几种流行的性能分析方法,介绍性能问题剖析方法的工作原理,以及应采集哪些数据。

第6章介绍现代CPU为支持及增强性能分析所提供的特性的相关信息,涵盖它们的工作原理以及能够解决的问题。

第7~9章介绍典型性能问题的处理方法,它们以最方便的方式与自顶向下微架构分析(Top-Down Microarchitecture Analysis,TMA)(见6.1节)一起组织和搭配使用。TMA是本书的重要概念。

第10章包含前3章中未讨论过但值得在本书中专门介绍的一些优化专题。

第11章讨论多线程应用程序的性能分析技巧,概要地描述多线程应用程序性能优化所要面对的挑战及可以使用的工具。这个主题涵盖非常广,所以这一章仅聚焦于硬件相关的问题,例如,“伪共享”。

本书提供的例子主要基于开源软件:Linux操作系统、基于LLVM/Clang的C和C++编译器、perf工具。之所以选择这些软件不仅仅是因为它们非常流行,还因为它们开放的源代码可以帮助我们理解底层工作原理,而这对学习和掌握本书中讲述的概念非常有帮助。本书也会展示某些特定领域专用的闭源重磅工具,例如Intel VTune Profiler。