代码性能优化与数据结构使用指南
1. 优化前的思考:明确测量目标
优化代码往往会增加其复杂度,虽然高层次的优化(如算法和数据结构的选择)可能使代码意图更清晰,但多数情况下,优化会让代码更难阅读和维护。因此,在进行优化前,我们要确保所做的优化能切实提升性能。我们需要思考是否真的需要让代码更快、以何种方式优化,以及代码是否真的占用了过多内存。为了明确可进行的优化方向,我们要深入理解性能需求,如延迟、吞吐量和内存使用情况。以下是优化代码时可遵循的工作流程:
1.定义目标:明确的量化目标能让我们更清楚如何优化以及何时停止优化。不同应用的需求明确程度不同,即便代码运行缓慢很明显,我们也需知道怎样的性能是足够好的。各领域有其自身限制,要确保了解与应用相关的限制。以下是一些具体示例:
- 用户交互应用的响应时间应在 100 毫秒以内,参考:https://www.nngroup.com/articles/response - times - 3 - important - limits
- 60 帧每秒(FPS)的图形,每帧处理时间为 16 毫秒
- 44.1 kHz 采样率、128 样本缓冲区的实时音频,处理时间略小于 3 毫秒
2.测量:明确测量内容和限制后,开始测量应用当前的性能。根据第一步确定的目标,明确关注的是平均时间、峰值、负载等。测量方式因应用而异,从使用秒表到使用复杂的性能分析工具都有可能。
3.查找瓶颈:找出应用中运行缓慢、影响整体性能的部分。此时不要仅凭直觉,虽然在第二步测量代码时可能获得了一些见解,但通常还需要进一步分析代码以找