跳到主内容
性能优化复杂度分析

性能优化 Prompt:让 AI 像性能工程师一样定位瓶颈

把慢代码或慢查询粘进来并给出输入规模与耗时,AI 分析复杂度与瓶颈点,按「预期收益 / 风险」输出优化方案与改造后代码,附 before/after 基准对比。

发布 2026-06-21更新 2026-10-11核实 2026-10-11
适用:ClaudeCursorChatGPTGLM

用法

把需要优化的代码粘进来。说明当前性能指标(耗时、内存)和目标。

什么时候用

  • 已经有可复现的慢路径:能给出输入规模、耗时与内存,且能稳定复现。
  • 瓶颈范围已经收窄到某个模块 / 某条查询:本模板的定位是定位与排序,不是全链路排查。
  • 优化前需要和团队对齐「值不值得做」——按「预期收益 / 风险」排序的输出本身就是决策材料。
  • 优化后要防回归:把 Before/After 基准固化成脚本,下次重构能立刻发现性能倒退。

什么时候别用

  • 还没测过就让它优化——不给「当前表现」字段,AI 只能靠模式匹配猜,而真实瓶颈八成不在它猜的地方。先测,再来。
  • 瓶颈在 I/O 与网络等待,但代码里看不出来(数据库锁、下游超时、磁盘争用)——这类要的是 profiling 与可观测性数据,不是代码改写。
  • 性能问题其实是架构问题(单次请求拉全表、跨region调用)——局部优化改不动,得先动架构。
  • 没有基准可复现——优化无法证伪,也无法防回归。先花 30 分钟写个可复现基准,再花 3 小时优化。

Prompt

你是一个性能优化专家。请分析以下代码的性能问题,并给出优化方案。

## 代码

{{粘贴代码}}

## 当前表现

- 输入规模:{{比如 10 万条数据}}
- 耗时:{{比如 15 秒}}
- 内存:{{比如 2GB}}
- 目标:{{比如 1 秒内完成}}

## 分析要求

1. **复杂度分析**
   - 时间复杂度(大 O 表示)
   - 空间复杂度
   - 瓶颈在哪里(哪一行/哪个循环)

2. **优化方案**
   - 按优先级排序(收益最大的排前面)
   - 每个方案说明预期效果(时间/空间)
   - 给出优化后的完整代码

3. **权衡说明**
   - 优化后是否有 trade-off(可读性、内存换时间等)
   - 是否需要额外依赖

## 输出格式

### 复杂度分析
- 当前:O(???)
- 瓶颈:第 X 行的 YYY 循环

### 优化方案

#### 方案 1:{{方案名}}(推荐)
- 预期效果:耗时从 15s → 0.8s
- 原理:...
- 代码:
```{{语言}}
// 优化后的代码
```

#### 方案 2:{{方案名}}(备选)
- ...

### Before / After 对比
| 指标 | 优化前 | 优化后 | 提升 |
|---|---|---|---|

### 注意事项
- 优化后需要更新的测试
- 需要注意的 edge case

常见优化模式

AI 会检查以下常见性能问题:

  • O(n²) 循环 → 哈希表降为 O(n)
  • N+1 查询 → JOIN 或批量查询
  • 递归无记忆化 → 加 memo/cache
  • 不必要的全量加载 → 分页/懒加载
  • 字符串拼接 → 用 StringBuilder / join
  • 重复计算 → 预计算 + 缓存
  • 同步阻塞 → 异步/并发

为什么有效

  • 先要测量再要优化:不给「当前表现」字段时,AI 会凭模式匹配猜瓶颈,而真实瓶颈八成不在它猜的地方。
  • 要求按「预期收益 / 风险」排序:优化是排序问题不是枚举问题——列 10 个方案但排第一的那个收益只有 2%,等于白做。
  • 强制给出验证方法:没有基准复现步骤的优化无法证伪,也无法在下次重构时防回归。

验收判据:怎么判断它给的优化方案能用

没有数字的方案一律打回。 看这六条:

#判据不合格的典型表现
1瓶颈点定位到具体行 / 具体查询只写「循环太多」「建议加缓存」,不给行号与查询
2给出复杂度分析(优化前后)只有「会更快」,没有 O(?) → O(?)
3预期效果带数字写「显著提升」而不写「15s → 0.8s」
4方案按收益排序列了 10 个方案但排第一的收益只有 2%
5明确写出 trade-off只说好处不说代价(内存换时间、可读性下降、新增依赖)
6给出可执行的复现与验证步骤没有基准命令,「快没快」全靠感觉

最容易被忽略的是第 5 条。 性能优化本质上是用一种资源换另一种资源:缓存用空间换时间、异步用复杂度换吞吐、批量化用延迟换总量。只讲收益不讲代价的方案,通常在生产上会变成新的事故源(典型:加缓存后忘了失效策略,读到脏数据)。

验收的最后一关是「优化后行为是否不变」——性能改动最容易夹带逻辑变更。建议把本模板的输出再过一遍 安全重构 Prompt,确认外部行为没被顺手改掉。

变体 A / B / C

A · 只诊断不动手(评审用) —— 把「分析要求」第 2 条换成:

2. 只输出诊断与排序,不要给出优化后的完整代码。
   每个方案必须标注:预期收益(数字)、实施成本(人日)、风险等级(low/mid/high)。

B · 慢查询专用(贴执行计划) —— 在「当前表现」里追加:

- EXPLAIN / EXPLAIN ANALYZE 输出:
{{粘贴真实执行计划,不要省略行数与耗时}}

B 是最值得用的变体。 让 AI 对着真实的执行计划分析,远比让它读 SQL 文本猜准——rows 估算与实际行数的偏差、Seq Scan 还是 Index Scan、有没有 Sort 溢出到磁盘,这些只有执行计划里有。配合 Cursor + MCP 操作数据库 可直接取到真实 EXPLAIN。

C · 前端 / 渲染性能专用 —— 把「当前表现」换成:

- 指标:LCP / INP / CLS 当前值与目标值
- 复现路径:{{URL + 操作步骤 + 设备 / 网络节流条件}}
- 已有 trace:{{Performance 面板或 Lighthouse 的关键节点}}

进阶(自动化)

把优化前后的基准固化成脚本,避免「我感觉快了」:

# 用 hyperfine 量化,结果进 CI artifact
hyperfine --warmup 3 --runs 20 "node bench/checkout.js" --export-json bench/before.json
# 改动后重跑并对比
node scripts/compare-bench.mjs bench/before.json bench/after.json

反例(AI 默认会写的烂版本)

默认输出:「建议加缓存」「可以用 Redis」「考虑异步化」——三条都对,但不知道加在哪、加完能快多少。

加了 prompt 之后:checkout.js:118 的 N+1 查询(每个订单一次 SELECT items),改为批量 IN 查询,本地 200 单基准从 1.8s → 240ms;风险:单次 SQL 变长,需确认 items.id 有索引。

延伸阅读

相关对比

Cursor vs Aider:GUI IDE 还是 CLI?2026 对比

Cursor vs Aider 2026 选型对比:GUI IDE vs Git 原生 CLI,从 Composer vs Architect 双模型、Tab 补全、多模型 BYOK、价格计费、开源与否和适合人群判断,帮开发者选对。Cursor 是闭源 VS Code fork 月费 $20,Aider 是开源 Apache-2.0 CLI 自带 API key。

Augment Code vs Cursor:企业 AI 编程怎么选?Context Engine vs AI IDE 对比

Augment Code vs Cursor 2026 选型对比:Context Engine 全仓索引的企业 AI 平台 vs SpaceX 收购的 AI IDE 天花板,从形态、Context 覆盖、长任务、价格、合规、中文支持和适合人群 8 个维度判断,帮你选对企业 AI 编程工具。

Cursor vs Claude Code:什么时候用哪个?(2026 实测选型)

Cursor 和 Claude Code 到底怎么选?一句话结论 + 决策树 + 价格实测 + 国内可用性对比。GUI 派选 Cursor,终端长任务派选 Claude Code,最优解其实是共存。

Cursor vs GitHub Copilot:AI IDE 还是插件?2026 对比

Cursor vs GitHub Copilot 2026 选型对比:AI 原生 IDE vs IDE 插件,从 Composer vs Agent Mode、Tab 补全、多模型、AI Credits 计费、企业版和适合人群判断,帮开发者选对。Cursor 是 VS Code fork 重写交互层,Copilot 是 VS Code 插件继承原生体验。两家都已切 usage 制。

Cursor vs Kiro:「对话式改代码」与「规格驱动开发」怎么选(2026)

Cursor 代表对话式、迭代式 AI 编码;Kiro 主打 spec-driven,先写需求与设计再生成代码。本文补上 2026-11-03 官网核对的价格与额度、两种范式的实际差异、决策表与迁移成本,帮你按交付方式而不是口号选型。

Cursor vs Trae:国内开发者怎么选?价格、模型、网络和真实体验对比

Cursor vs Trae 2026 选型对比:从价格、模型能力、国内访问、Builder/Composer、多文件改写、MCP 生态和适合人群判断,帮国内开发者决定继续用 Cursor,还是切到字节 Trae。

相关评测