本书讨论了什么?

本书旨在帮助开发人员更好地理解其应用程序的性能,学会发现效率低下的地方,并加以消除。为什么我的手写压缩算法比传统的慢了两倍?为什么我的函数更改导致性能下降了一半?客户抱怨我的应用程序运行缓慢,我应该从哪里开始?我是否已经充分优化了程序?我的平台上有哪些性能分析工具?减少缓存未命中和分支预测失败的技术有哪些?希望通过本书的学习,你能找到这些问题的答案。

以下是本书的大纲:

  • 第二章讨论如何进行公平的性能实验并分析其结果。它介绍了性能测试和比较结果的最佳实践。
  • 第三章介绍了CPU微体系结构的基础知识,第四章介绍了性能分析中使用的术语和指标;我们建议即使已经了解这些内容,也不要跳过这些章节。
  • 第五章探讨了几种最流行的性能分析方法。它解释了分析技术的工作原理,可以收集哪些运行时数据以及如何进行收集。
  • 第六章审查了现代CPU提供的功能,以支持和增强性能分析。它展示了它们的工作原理以及它们可以解决的问题。
  • 第七章概述了主要平台上最受欢迎的工具,包括基于x86和ARM的处理器上运行的Linux、Windows和MacOS。
  • 第八至十一章包含了典型性能问题的解决方案。这些章节根据自顶向下微体系结构分析方法进行组织,这是本书最重要的概念之一。如果一些术语对您还不清楚,不要担心,我们将一步一步地覆盖所有内容。第八章(内存瓶颈(Memory Bound))涉及优化内存访问、缓存友好的代码、内存分析、大页和其他一些技术。第九章(核心绑定)涉及优化计算,探讨了函数内联、循环优化和向量化。第十章(坏预测)涉及无分支编程,用于避免频繁的预测失败分支。第十一章(前端瓶颈)涉及机器代码布局优化,如基本块放置、函数拆分、基于配置文件的优化等。
  • 第十三章包含了不特定于前四章所涵盖的任何类别的优化主题,但仍然足够重要,以至于在本书中找到了它们的位置。在这里,你会找到低延迟技术、调整系统以获得最佳性能的技巧、标准库函数的更快替代方法等。
  • 第十四章讨论了分析多线程应用程序的技术。它概述了优化多线程应用程序性能的一些最重要挑战以及可用于分析它们的工具。这个主题本身很庞大,所以这一章节只侧重于硬件相关的问题,比如“伪共享”。
  • 第十五章讨论了软件和硬件性能领域的当前和未来趋势。我们讨论了传统计算机系统设计的进步以及一些创新的想法。

本书提供的示例主要基于开源软件:Linux作为操作系统,基于LLVM的Clang编译器用于C和C++语言,以及Linux perf作为性能分析工具。选择这些技术的原因不仅是因为它们的流行程度,还因为它们的源代码是开放的,这使我们能够更好地理解它们的工作原理。这对于学习本书中提出的概念特别有用。我们有时也会展示一些专有工具,这些工具在其领域是“大玩家”,例如Intel® VTune™ Profiler。

results matching ""

    No results matching ""