高效编程的艺术
高效编程的艺术
简介:
引言
费奥多尔·皮库斯所著的《The Art of Writing Efficient Programs》(俄语译本名为《高效编程的艺术》)不仅仅是一本普通的C++教材。它深入探讨了性能、优化和架构决策的世界,这些能将普通代码转变为高效工具。该书于2021年由Packt出版社出版,共446页,已成为众多力求从现代硬件中榨取最大性能的开发者的案头指南。
费奥多尔·皮库斯是高性能计算领域的公认专家,曾在谷歌和其他科技巨头工作。他的经验以及解决性能问题的实用方法使这本书独具特色。与许多抽象的理论著作不同,皮库斯提供了具体、经过实践验证的方法,并附有C++示例。
这本书是关于什么的?
这本书致力于讲述如何创建运行最快、最高效的程序,以最高效率利用CPU、内存和输入/输出子系统的资源。作者系统地讲解了性能的关键方面,从基础开始,一直深入到高级技术。
书中涵盖的主要主题包括:
- 性能测量:如何正确地对代码进行性能分析、解读结果并找到瓶颈。
- 内存优化:缓存、数据对齐、引用局部性、动态内存管理。
- 并行与多线程:高效使用线程、同步、避免数据竞争和死锁。
- 算法优化:选择正确的数据结构、算法复杂度及其对实际性能的影响。
- 向量化与SIMD:使用CPU指令进行并行数据处理。
- 与编译器协作:如何帮助编译器生成更快的代码、优化选项、内联。
- 为性能而设计:从一开始就奠定高速度基础的架构模式。
这本书适合谁?
这本书面向已经具备C++(或其他系统语言)编程经验,并希望提升到新层次——创建真正快速高效应用的开发者。它将有助于:
- 游戏和图形引擎开发者。
- 从事高负载服务器和数据库工作的工程师。
- 嵌入式系统和物联网专家。
- 所有为金融、科学或工程计算编写代码的人。
- 学习系统编程的高年级工科学生。
读者将学到什么?
阅读本书后,读者将能够:
- 使用性能分析工具(perf、Valgrind、Google Benchmark)正确评估自己代码的性能。
- 理解CPU缓存的工作原理,并编写能最大限度利用缓存的代码。
- 高效管理内存,避免碎片化和不必要的分配。
- 使用现代同步原语编写安全且快速的多线程代码。
- 应用SIMD指令,在不损失代码可读性的情况下将计算速度提升2-4倍。
- 针对特定任务选择最优数据结构(std::vector vs std::list、哈希表、树)。
- 使用C++17/20特性(例如std::optional、std::variant、constexpr)来提高性能。
- 设计从一开始就面向高速度的应用程序架构。
本书的优势
费奥多尔·皮库斯的这本书因以下几个关键特点而在众多优化类书籍中脱颖而出:<