第1章 导读

在日益以数据为中心的世界中,信息交换需求的增长促进了对更快的硬件和软件的需求。公平地说,数据的增长不但对算力也对网络和存储系统提出了要求。

在PC时代,开发者通常在操作系统上直接编程,可能用到介于应用程序和操作系统之间的一些库函数。而在云计算时代,软件栈层次变得更深、更复杂,大部分开发者接触的软件栈顶层离硬件层更为遥远。

当每代的新硬件不再显著提升性能,寻找性能提升方法应该瞄准优化应用程序的代码。

1.1 为什么需要性能调优

典型的通用多线程应用程序的性能并不总是随着分配到任务的CPU核数量的增长而线性增长,了解发生这种情况的原因及潜在解决方案对产品的未来发展至关重要。

以下是影响系统的最佳性能的一些因素:
        1. CPU的限制,处理器并不能神奇地把次优的代码转化为性能更好的代码。
        2. 编译器的限制,编译器很擅长消除冗余,但是当需要对诸如函数内联、循环展开等作出更复杂决定时,编译器也许不能生成最佳的代码。此外,编译器只会在确保安全且不影响生成的机器码正确性的情况下作代码优化。最后,编译器通常不会改变程序使用的数据结构,而数据结构对性能至关重要。
        3. 算法复杂度分析的限制,复杂度分析无法解释各种算法的所有分支预测和缓存的影响。

在当前单核性能已经达到峰值,增长趋势趋于平缓时,把应用程序分布式运行于多个计算核是很有必要的,而这要求不同线程之间能高效通信、排除不需要的资源并规避多线程程序的典型问题。

性能的提升不止来自软件调优,未来另外两个主要潜在加速源是算法和高效的硬件设计。

1.2 谁需要做性能调优

性能优化是一场无尽的游戏,因为总是存在值得优化的地方,但是进一步的改进需要非常高的工程成本。何时停下优化步伐也是性能调优工作的一个关键要点。

如果不能增加产品价值,为了优化而优化的工作纯属无用工作。合理的性能调优工作总是要先定义性能目标,论述清楚达到的结果以及这样做的原因。

1.3 什么是性能分析

第一个建议:一定要测量。正确找到需要修复的位置需要仔细的性能分析,而不是依靠直觉和猜测。

许多过去广为流传的有效优化小技巧,已经被现代编译器学会了。

本书介绍的方法针对CPU的性能分析方法有一个共同点:它们需要收集程序运行的某些信息

定位性能瓶颈只是工程师工作的一半(性能分析),而另一半是用合理的方法解决它(性能优化)。

1.4 本书的主要内容

本书主要是为了帮助开发者理解它们所开发的应用程序的性能表现,学会查找并去除低效代码。本书章节介绍:
        第2章讨论如何展开性能实验及分析实验结果,介绍性能测试和对比结果的最佳实践。
        第3、4章介绍CPU微架构的基本知识和性能分析相关术语
        第5章讨论几种流行的性能分析方法,介绍性能问题剖析方法的工作原理,以及应采集那些数据。
        第6章介绍现代CPU为支持及增强分析所提供的特性的相关信息,涵盖它们的工作原理以及能够解决的问题。
        第7~9章介绍典型性能问题的处理方法,TMA(top-down microarchitecture analysis)。
        第10章包含含前3章未讨论但值得介绍的一些优化专题。
        第11章讨论多线程应用程序的性能分析技巧,概要地描述多线程应用程序性能优化所要面对的挑战及可以使用的工具。

1.5 本书不包含什么内容

本书讨论的问题只局限于单CPU,不包括分布式、NUMA、异构系统。

本书假定读者能完全控制自己开发的软件,包括选择库函数、编译器等。

1.6 本章总结

        1. 硬件在单线程方法没有像过去那样获得那么多的性能提升。
        2. 在不远的将来,软件调优将成为性能提升的关键驱动力。对于大型分布式应用来说,每个细小的性能优化都可能节省巨大的成本。
        3. 软件、硬件环境会限制应用程序发挥最大潜能。CPU不会神奇地加速算法,编译器也不会为每个程序都产生最优的机器码,以及硬件的特殊性。所有这些因素都为软件调优工作留下了发挥空间。
        4. 软件优化需要有强烈的业务支持,开发者应该设定可量化的目标和指标来衡量进度
        5. 现代计算平台下,各种因素掺杂在一起,预测某段代码的性能几乎不可能。开展软件优化工作时,开发者不应当依靠直觉,而应当使用细致的性能分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值