1.6 本章总结
硬件在单线程性能方面没有像过去那样获得那么多的性能提升,这就是性能调优变得比过去40年时更重要的原因,如今计算行业的变化比20世纪90年代以来的任何时候都要剧烈。
根据文献(Leiserson et al.,2020),在不远的将来软件调优将成为性能提升的关键驱动力,所以不可以低估性能调优的重要性。对于大型分布式应用程序来说,每个细小的性能优化都可能节省巨大的成本。
软件并不默认具有最优的性能,某些因素会限制应用程序发挥最大潜能,而这些限制因素存在于软件、硬件环境。CPU并不会神奇地加速慢算法,编译器也不能为每个程序都产生最优的机器码。由于硬件的特殊性,针对特定问题的著名算法并不一定总是能够达到期望的效果。所有这些因素都为软件调优工作留下了发挥空间。
对某些应用程序来说,性能不只是一个简单的功能特性,它还能够让用户用全新方法解决全新的问题。
软件优化需要有强烈的业务需要支撑,开发者应该设定可量化的目标和指标来衡量进度。
现代计算平台下,各种因素掺杂在一起,预测某段代码的性能几乎不可能。开展软件调优工作时,开发者不应当依赖直觉,而应当使用细致的性能分析。
[1] ㊀100亿亿(Quintillion),10的18次方(10)。
[2] ㊁从20世纪90年代末到21世纪第一个十年末,个人计算机(Personal Computer,PC)主导了计算设备市场。
[3] ㊂单线程性能指CPU核中单个硬件线程的性能。
[4] ㊀在浮点运算操作的顺序方面,这个问题很突出。
[5] ㊁通常在7~50。
[6] ㊀https://docs.microsoft.com/en-us/visualstudio/ide/visual-cpp-intellisense.
[7] ㊁实际上,不可能在几毫秒内解析整个代码库。IntelliSense只重新构建改变过的AST部分。更多实现细节可以观看视频(https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction)。
[8] ㊂https://www.unrealengine.com.
[9] ㊃https://unity.com/.
[10] ㊄见“Reflections on software performance”(https://blog.nelhage.com/post/reflections-on-performance/)。
[11] ㊀屋顶线性能模型(见5.5节)和自顶向下微架构分析技术(见6.1节)可以用来评估性能和硬件理论极限的关系。
[12] ㊀http://www.brendangregg.com/methodology.html.