Skip to main contentperformance-optimizer
Identifies and fixes performance bottlenecks in code, databases, and APIs. Measures before and after to prove improvements.
インストールへ移動 Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/BEKO2210/Firstbrain --skill performance-optimizerコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
| name | performance-optimizer |
| description | Identifies and fixes performance bottlenecks in code, databases, and APIs. Measures before and after to prove improvements. |
| type | skill |
| created | 2026-02-27T00:00:00.000Z |
| domain | ai-ml |
| category | prompt-engineering |
| risk | safe |
| source | community |
| tags | ["skill","ai-ml","prompt-engineering","performance","optimizer"] |
Performance Optimizer
Find and fix performance bottlenecks. Measure, optimize, verify. Make it fast.
When to Use This Skill
- App is slow or laggy
- User complains about performance
- Page load times are high
- API responses are slow
- Database queries take too long
- User mentions "slow", "lag", "performance", or "optimize"
The Optimization Process
1. Measure First
Never optimize without measuring:
console.time('operation');
await slowOperation();
console.timeEnd('operation');
What to measure:
- Page load time
- API response time
- Database query time
- Function execution time
- Memory usage
- Network requests
2. Find the Bottleneck
Use profiling tools to find the slow parts:
Browser:
DevTools → Performance tab → Record → Stop
Look for long tasks (red bars)
Node.js:
node --prof app.js
node --prof-process isolate-*.log > profile.txt
Database:
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com';
3. Optimize
Fix the slowest thing first (biggest impact).
Common Optimizations
Database Queries
Problem: N+1 Queries
const users = await db..();
( user users) {
user. = db..({ : user. });
}
users = db..()
.();
users
find
for
const
of
posts
await
posts
find
userId
id
const
await
users
find
populate
'posts'
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
CREATE INDEX idx_users_email ON users(email);
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
const users = await db.query('SELECT * FROM users');
const users = await db.query('SELECT id, name, email FROM users');
const users = await db.users.find();
const users = await db.users.find()
.limit(20)
.skip((page - 1) * 20);
API Performance
app.get('/api/stats', async (req, res) => {
const stats = await db.stats.calculate();
res.json(stats);
});
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);
});
Problem: Sequential Operations
const user = await getUser(id);
const posts = await getPosts(id);
const comments = await getComments(id);
const [user, posts, comments] = await Promise.all([
getUser(id),
getPosts(id),
getComments(id)
]);
res.json(users);
res.json(users.map(u => ({
id: u.id,
name: u.name,
email: u.email
})));
Frontend Performance
Problem: Unnecessary Re-renders
function UserList({ users }) {
return users.map(user => <UserCard user={user} />);
}
const UserCard = React.memo(({ user }) => {
return <div>{user.name}</div>;
});
import _ from 'lodash';
import debounce from 'lodash/debounce';
Problem: No Code Splitting
import HeavyComponent from './HeavyComponent';
const HeavyComponent = React.lazy(() => import('./HeavyComponent'));
Problem: Unoptimized Images
<img src="photo.jpg" />
<img
src="photo-small.webp"
srcset="photo-small.webp 400w, photo-large.webp 800w"
loading="lazy"
width="400"
height="300"
/>
Algorithm Optimization
Problem: Inefficient Algorithm
function findDuplicates(arr) {
const duplicates = [];
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) duplicates.push(arr[i]);
}
}
return duplicates;
}
function findDuplicates(arr) {
const seen = new Set();
const duplicates = new Set();
for (const item of arr) {
if (seen.has(item)) duplicates.add(item);
seen.add(item);
}
return Array.from(duplicates);
}
Problem: Repeated Calculations
function getTotal(items) {
return items.reduce((sum, item) => sum + item.price * item.quantity, 0);
}
const getTotal = useMemo(() => {
return items.reduce((sum, item) => sum + item.price * item.quantity, 0);
}, [items]);
Memory Optimization
useEffect(() => {
window.addEventListener('scroll', handleScroll);
}, []);
useEffect(() => {
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
}, []);
Problem: Large Data in Memory
const data = fs.readFileSync('huge-file.txt');
const stream = fs.createReadStream('huge-file.txt');
stream.on('data', chunk => process(chunk));
Measuring Impact
Always measure before and after:
console.time('query');
const users = await db.users.find();
console.timeEnd('query');
console.time('query');
const users = await db.users.find();
console.timeEnd('query');
Performance Budgets
Page Load: < 2 seconds
API Response: < 200ms
Database Query: < 50ms
Bundle Size: < 200KB
Time to Interactive: < 3 seconds
Tools
- Chrome DevTools Performance tab
- Lighthouse (audit)
- Network tab (waterfall)
node --prof (profiling)
clinic (diagnostics)
autocannon (load testing)
EXPLAIN ANALYZE (query plans)
- Slow query log
- Database profiler
- New Relic
- Datadog
- Sentry Performance
Quick Wins
Easy optimizations with big impact:
- Add database indexes on frequently queried columns
- Enable gzip compression on server
- Add caching for expensive operations
- Lazy load images and heavy components
- Use CDN for static assets
- Minify and compress JavaScript/CSS
- Remove unused dependencies
- Use pagination instead of loading all data
- Optimize images (WebP, proper sizing)
- Enable HTTP/2 on server
Optimization Checklist
When NOT to Optimize
- Premature optimization (optimize when it's actually slow)
- Micro-optimizations (save 1ms when page takes 5 seconds)
- Readable code is more important than tiny speed gains
- If it's already fast enough
Key Principles
- Measure before optimizing
- Fix the biggest bottleneck first
- Measure after to prove improvement
- Don't sacrifice readability for tiny gains
- Profile in production-like environment
- Consider the 80/20 rule (20% of code causes 80% of slowness)
Related Skills
@database-design - Query optimization
@codebase-audit-pre-push - Code review
@bug-hunter - Debugging
Connections
- Domain: [[KI & Machine Learning]]
- Kategorie: [[Prompt Engineering]]
- Navigation: [[Skills Uebersicht]], [[Home]]