Rails Performance Review
Audience: Rails developers reviewing code for performance issues Goal: Identify N+1 queries, missing indexes, memory issues, and scalability bottlenecks
Analysis Framework
Check all areas systematically. See references/patterns.yaml for anti-patterns and fixes.
| Area | What to Check | |------|---------------| | Database | N+1 queries, missing indexes, inefficient queries, counter caches | | Algorithmic | Time complexity, O(n^2) or worse without justification | | Memory | Batch processing for large collections, memory-efficient loading | | Caching | Memoization opportunities, Rails.cache for expensive computations | | Background Jobs | Long-running tasks that should be async | | Locks | Transaction scopes, lock duration, external calls in transactions | | Defensive | strict_loading, query timeouts |
Performance Benchmarks
- No algorithms worse than O(n log n) without justification
- All queried columns must have indexes
- API responses under 200ms
- Collections processed in batches (1000 items max)
Verification Commands
# Check for missing indexes in schema
grep -E "(belongs_to|has_many)" app/models/*.rb | grep -v "optional:"
# Find potential N+1 queries
grep -rn "\.each.*\." app/ --include="*.rb" | grep -v find_each
# Check slow query log (if enabled)
tail -100 log/development.log | grep "Load"
Output Format
## Performance Summary
[High-level assessment]
## Critical Issues
| Issue | Impact | Solution |
|-------|--------|----------|
| [description] | [current + at scale] | [specific fix] |
## Scalability Assessment
- At 10x data: [projection]
- At 100x data: [projection]
## Recommended Actions
1. [Highest impact fix]
2. [Next priority]