让 AI 自动定位并修复代码性能瓶颈
解决应用变慢问题:AI 帮你分析页面加载、API 响应、数据库查询等慢速环节,提供具体的优化方案和测量数据,证明性能提升效果。
为什么需要这个技能
当用户反馈应用卡顿、页面加载慢或 API 响应超时,单纯猜测很难快速定位原因。应用变慢往往源于无用的循环查询、缺失的数据库索引、未缓存的大数据请求或前端组件重复渲染。
这个技能让 AI 充当性能专家,自动识别这些隐蔽的瓶颈点,生成具体的代码修改建议,并指导你通过测量来验证优化成果,确保每次改进都是有效的。
适用场景
- 用户投诉:“这个页面打开太慢了"或"APP 经常卡死”。
- 监控发现:数据库查询执行时间超过 500ms,或 API 响应时间变长。
- 开发测试:发现循环中重复执行 N+1 查询,或使用了全量
SELECT *导致内存溢出。 - 预算设定:需要确保页面加载在 2 秒内,或 Bundle 体积控制在 200KB。
核心工作流
- 测量现状:首先使用
console.time、DevTools 性能面板或数据库分析命令(EXPLAIN ANALYZE)获取基准数据。 - 定位瓶颈:AI 分析测量结果,判断是网络请求、计算逻辑还是渲染问题。
- 应用修复:生成具体代码(如添加索引、启用缓存、使用
Promise.all并行请求、组件懒加载)。 - 验证效果:再次测量,对比优化前后的时间差,确认提升倍数。
常见优化案例
数据库查询优化
问题:N+1 查询
// Bad: N+1 queries
const users = await db.users.find();
for (const user of users) {
user.posts = await db.posts.find({ userId: user.id }); // N queries
}
// Good: Single query with JOIN
const users = await db.users.find()
.populate('posts'); // 1 query
问题:缺失索引
-- Check slow query
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
-- Shows: Seq Scan (bad)
-- Add index
CREATE INDEX idx_users_email ON users(email);
-- Check again
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
-- Shows: Index Scan (good)
API 性能提升
问题:无缓存
// Bad: Hits database every time
app.get('/api/stats', async (req, res) => {
const stats = await db.stats.calculate(); // Slow
res.json(stats);
});
// Good: Cache for 5 minutes
const cache = new Map();
app.get('/api/stats', async (req, res) => {
const cached = cache.get('stats');
if (cached && Date.now() - cached.time < 300000) {
return res.json(cached.data);
}
const stats = await db.stats.calculate();
cache.set('stats', { data: stats, time: Date.now() });
res.json(stats);
});
问题:串行执行
// Bad: Sequential (slow)
const user = await getUser(id);
const posts = await getPosts(id);
const comments = await getComments(id);
// Total: 300ms + 200ms + 150ms = 650ms
// Good: Parallel (fast)
const [user, posts, comments] = await Promise.all([
getUser(id),
getPosts(id),
getComments(id)
]);
// Total: max(300ms, 200ms, 150ms) = 300ms
前端与内存优化
问题:不必要的重新渲染
// Bad: Re-renders on every parent update
function UserList({ users }) {
return users.map(user => <UserCard user={user} />);
}
// Good: Memoized
const UserCard = React.memo(({ user }) => {
return <div>{user.name}</div>;
});
问题:内存泄漏
// Bad: Event listener not cleaned up
useEffect(() => {
window.addEventListener('scroll', handleScroll);
// Memory leak!
}, []);
// Good: Cleanup
useEffect(() => {
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
}, []);
测量与预算
优化前后务必对比数据:
// Before optimization
console.time('query');
const users = await db.users.find();
console.timeEnd('query');
// query: 2341ms
// After optimization (added index)
console.time('query');
const users = await db.users.find();
console.timeEnd('query');
// query: 23ms
// Improvement: 100x faster!
性能预算目标:
- 页面加载:< 2 秒
- API 响应:< 200ms
- 数据库查询:< 50ms
- Bundle 大小:< 200KB
下载和安装
下载 performance-optimizer 中文版 Skill ZIP
解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。
你可能还需要
暂无推荐