name: perf description: 分析应用程序,优化瓶颈,并实现缓存。用于性能问题或优化任务。
性能工程
分析、优化应用程序性能。
何时使用
- 应用程序缓慢或无响应
- 用户报告性能问题
- 扩展基础设施之前
- 优化关键路径
- 设置监控
优化流程
- 测量 - 在优化前进行性能分析
- 识别 - 找到最大的瓶颈
- 优化 - 首先修复影响最大的问题
- 验证 - 用指标确认改进
性能分析命令
# Node.js 性能分析
node --prof app.js
node --prof-process isolate-*.log > profile.txt
# Python 性能分析
python -m cProfile -o output.prof script.py
python -m pstats output.prof
# Go 性能分析
go tool pprof http://localhost:6060/debug/pprof/profile
常见瓶颈
数据库
- 缺少索引(在WHERE/JOIN列上添加索引)
- N+1查询(使用急切加载)
- 大结果集(添加分页)
内存
- 内存泄漏(检查事件监听器、闭包)
- 大对象(使用流代替缓冲)
- 没有TTL的缓存(添加过期时间)
CPU
- 同步操作(改为异步)
- 复杂算法(优化或缓存)
- 不必要的计算(记忆化)
网络
- 请求过多(批量/合并)
- 负载过大(压缩、分页)
- 没有缓存(添加CDN、浏览器缓存)
性能预算
| 指标 | 目标 |
|---|---|
| 加载时间 (3G) | <3s |
| 加载时间 (4G) | <1s |
| API响应时间 | <200ms |
| 捆绑大小 | <500KB |
| LCP | <2.5s |
| FID | <100ms |
| CLS | <0.1 |
输出格式
## 性能报告
**之前:** [基线指标]
**之后:** [改进后的指标]
**改进:** [百分比]
### 识别的瓶颈
1. [问题] - 影响:高/中/低
### 应用的优化
1. [更改] → [结果]
示例
输入: “API 缓慢” 操作: 分析端点,识别慢查询,优化,验证改进
输入: “页面加载时间过长” 操作: 分析捆绑包,检查网络,优化关键路径,添加缓存