搜索

PythonReactSEOPDF
GitHub Skill

performance-profiler

Identifies performance bottlenecks including N+1 queries, inefficient loops, memory leaks, and slow algorithms. Use when user mentions performance issues, slow code, optimization, or profiling.

aiskillstore☆ 124 仓库 Stars6 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

Performance Profiler

Identifies and suggests fixes for common performance bottlenecks in code.

When to Use

  • User reports performance issues or slow code
  • Optimization requests
  • Code review for performance
  • User mentions "slow", "bottleneck", "optimization", "memory leak"

Instructions

1. Identify Performance Anti-Patterns

N+1 Query Problems:

// Bad: N+1 queries
users.forEach(user => {
  const posts = db.query('SELECT * FROM posts WHERE user_id = ?', user.id);
});

// Good: Single query with JOIN
const usersWithPosts = db.query('SELECT * FROM users LEFT JOIN posts ON users.id = posts.user_id');

Inefficient Loops:

# Bad: O(n²) nested loops
for item in list1:
    for other in list2:
        if item.id == other.id:
            process(item, other)

# Good: O(n) with hash map
lookup = {other.id: other for other in list2}
for item in list1:
    if item.id in lookup:
        process(item, lookup[item.id])

Unnecessary Re-renders (React):

// Bad: Creates new object on every render
<Component style={{ margin: 10 }} />

// Good: Define outside or useMemo
const style = { margin: 10 };
<Component style={style} />

Memory Leaks:

  • Event listeners not cleaned up
  • Timers not cleared
  • Circular references
  • Large caches without limits

Blocking Operations:

  • Synchronous file I/O
  • Long-running calculations in UI thread
  • Missing pagination
2. Database Performance

Check for:

  • Missing indexes on foreign keys
  • SELECT * instead of specific columns
  • Queries in loops (N+1)
  • Missing query limits
  • Inefficient JOINs

Suggest:

  • Add indexes: CREATE INDEX idx_user_id ON posts(user_id);
  • Use eager loading/prefetching
  • Implement pagination
  • Use database query analyzers (EXPLAIN)
3. Algorithm Complexity

Identify:

  • O(n²) or worse algorithms
  • Redundant calculations
  • Unnecessary sorting
  • Inefficient data structures

Common fixes:

  • Hash maps for O(1) lookup vs O(n) array search
  • Binary search O(log n) vs linear search O(n)
  • Memoization for repeated calculations
  • Lazy evaluation for expensive operations
4. Frontend Performance

Check for:

  • Large bundle sizes
  • Unoptimized images
  • Missing code splitting
  • Inefficient React components
  • Missing memoization

Suggest:

  • Lazy loading: const Component = lazy(() => import('./Component'));
  • Image optimization
  • Debounce/throttle expensive operations
  • Virtual scrolling for long lists
  • Web Workers for heavy computations
5. Network Performance

Issues:

  • Too many HTTP requests
  • Large payloads
  • Missing caching
  • Synchronous requests

Solutions:

  • Bundle/concatenate resources
  • Implement compression (gzip, brotli)
  • Use HTTP/2 multiplexing
  • Add caching headers
  • Parallel vs sequential requests
6. Generate Performance Report
Performance Analysis
===================

Critical Issues (Fix Immediately):
1. N+1 query in UserController.index (file.js:45)
   - Impact: 100+ DB queries per request
   - Fix: Use eager loading or JOIN

2. Memory leak in EventEmitter (file.js:120)
   - Impact: Memory grows unbounded
   - Fix: Remove listeners in cleanup

High Priority:
3. O(n²) loop in processData (file.js:200)
   - Impact: Slow for large datasets
   - Fix: Use hash map for O(n)

Medium Priority:
4. Missing image optimization
   - Impact: Slow page load
   - Fix: Use next/image or optimize manually
7. Profiling Tools

JavaScript:

  • Chrome DevTools Performance tab
  • Node.js --inspect flag
  • console.time() / console.timeEnd()

Python:

  • cProfile module
  • line_profiler
  • memory_profiler

Database:

  • EXPLAIN / EXPLAIN ANALYZE
  • Slow query log
  • pg_stat_statements (PostgreSQL)

Best Practices

  • Profile before optimizing
  • Focus on hot paths (80/20 rule)
  • Measure impact of changes
  • Consider readability vs performance trade-offs
  • Document performance-critical sections

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-01-20
索引更新时间
2026-01-28
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!