AI拉呱,专注于人工智领域与AI工具、前沿技术解读。关注一起学习,一起成长
性能优化技巧
多年来,我们(杰夫和桑杰)在各类代码的性能调优方面投入了大量精力。自谷歌创立之初,提升软件性能就一直是核心要务——因为更优的性能能让我们为更多用户提供更好的服务。撰写本文档的目的,是梳理我们在性能调优工作中遵循的通用原则与具体技巧,并选取具有代表性的代码变更案例(变更清单,即 CL),为各种优化方法和技巧提供实例参考。
本文档中的大部分具体建议都会涉及 C++ 类型和相关代码变更案例,但其中的通用原则同样适用于其他编程语言。需要说明的是,本文档聚焦于单个二进制程序的通用性能调优,不涵盖分布式系统或机器学习硬件的性能调优(这两个领域本身内容极为庞大)。我们希望这份文档能为更多开发者提供帮助。
文档中的诸多示例都配有代码片段来演示对应技巧(点击小三角即可展开查看)。请注意,部分代码片段会提及谷歌内部代码库的各类抽象概念。但只要我们认为这些示例具备足够的独立性,即便不熟悉这些抽象概念的细节,读者也能理解其核心逻辑,我们就会保留这些内容。
重视性能考量的必要性
高德纳(Knuth)的一句名言常被断章取义——“过早优化是万恶之源”。但完整的表述是:“在大约 97% 的情况下,我们应该忽略那些微小的性能优化:过早优化确实是万恶之源。但在那关键的 3% 的场景中,我们绝不能错失优化的机会。” 本文档所探讨的,正是这关