程序员如何做「性能优化」:不是炫技,是权衡
性能优化是程序员的核心技能之一。
但很多人优化的时候忘记了最重要的事:优化是有成本的。
一、什么时候需要优化
1. 性能成为瓶颈
用户投诉"页面加载太慢",或者"接口响应时间长"。
2. 资源消耗过高
CPU、内存、带宽消耗超出预期。
3. 业务量增长
当前架构支撑不了未来的业务量。
二、性能优化的步骤
1. 测量
不要猜,用工具测量:
- 哪里慢
- 慢到什么程度
- 为什么慢
2. 分析
找到瓶颈在哪里:
- 数据库查询慢
- 网络请求慢
- 算法复杂度高
- 资源竞争
3. 优化
针对瓶颈做优化:
- 加索引
- 减少请求
- 优化算法
- 加缓存
4. 验证
优化后再次测量,确认有提升。
三、常见的优化手段
1. 数据库优化
- 加索引
- 优化查询
- 分页
- 读写分离
2. 缓存
- 本地缓存
- Redis 缓存
- CDN
3. 异步
- 消息队列
- 异步任务
4. 代码优化
- 减少循环
- 避免重复计算
- 批量操作
四、优化时要注意的事
1. 不要过早优化
先测量,找到瓶颈再优化。
2. 不要优化错误的地方
花 3 天优化 1% 占比的代码,不值得。
3. 不要牺牲可读性
为了 1% 的性能牺牲可读性,是债。
4. 要知道优化上限
优化到一定程度,再优化收益就变小了。
五、工具
1. 性能分析
- Java:JProfiler、YourKit
- Python:cProfile
- 前端:Chrome DevTools
2. APM
- SkyWalking
- Pinpoint
- Elastic APM
六、一句话总结
性能优化 = 测量 + 分析 + 优化 + 验证,不是炫技,是权衡。