1.5 本书不包含什么内容

系统性能取决于构成整个系统的不同组件,如CPU、操作系统、内存、IO设备等,而应用程序能够从不同组件的性能优化获益。通常来说,工程师应当分析整个系统的性能,然而,影响整个系统性能的最大因素是其核,即CPU。这也是本书从CPU视角探讨性能分析的原因,当然,在个别情况下也会涉及操作系统、内存等子系统。

本书讨论的问题只局限于单CPU,也就是说,本书不讨论分布式、NUMA、异构计算系统的优化技术,也不讨论使用OpenCL、OpenMP等框架平台将计算卸载到加速器(GPU、FPGA等)的技术。

本书围绕Intel x86 CPU架构平台展开,不提供AMD、ARM、RISC-V等芯片架构的优化办法,但是本书运用的调优技巧同样适用于这些处理器。另外,本书中的案例以Linux操作系统为平台,但是同样的技巧实际上也可以应用于Windows、Mac等操作系统。

本书中所有的代码片段都以C、C++以及x86汇编语言编写,但是绝大部分的思想也可以用于使用类似Rust、Go甚至Fortran语言编写的代码。由于本书面向在用户态运行的程序,直接接近硬件本身,因此我们不讨论管理环境(例如Java)下的问题。

最后,本书作者假定读者能完全控制自己开发的软件,包括选择库函数、编译器等。因此,本书不包括对某些商用软件包的调优,例如优化SQL数据库查询。