performance-analyzer
Performance Analyzer Skill
パフォーマンスボトルネックを特定し、最適化提案を行うスキルです。
概要
コードの実行時間、メモリ使用量、アルゴリズム複雑度を分析し、具体的な最適化提案を提供します。
主な機能
- アルゴリズム複雑度分析: Big O記法での評価
- N+1クエリ検出: データベースクエリの最適化
- メモリリーク検出: 未解放リソース、循環参照
- キャッシング機会: メモ化、CDN活用
- 非同期処理: 並列化、Promise最適化
- バンドルサイズ: Tree shaking、Code splitting
- レンダリング最適化: 仮想化、遅延読み込み
使用方法
このコードのパフォーマンス分析:
[コード]
分析項目:
- アルゴリズム複雑度
- メモリ使用量
- 最適化提案
分析例
N+1 クエリ問題
問題のあるコード:
// O(n) のクエリを n 回実行 = O(n²)
const posts = await Post.findAll();
for (const post of posts) {
post.author = await User.findById(post.authorId); // N+1問題
}
最適化:
// O(n) + O(m) = O(n)
const posts = await Post.findAll();
const authorIds = posts.map(p => p.authorId);
const authors = await User.findByIds(authorIds); // 1回のクエリ
const authorMap = new Map(authors.map(a => [a.id, a]));
posts.forEach(post => post.author = authorMap.get(post.authorId));
改善: クエリ数 101回 → 2回、レスポンス時間 90% 削減
アルゴリズム最適化
非効率:
# O(n²) - 遅い
def has_duplicates(arr):
for i in range(len(arr)):
for j in range(i + 1, len(arr)):
if arr[i] == arr[j]:
return True
return False
最適化:
# O(n) - 高速
def has_duplicates(arr):
return len(arr) != len(set(arr))
メモリ最適化
問題:
// メモリリーク: イベントリスナーが解放されない
component.addEventListener('click', handler);
修正:
// クリーンアップ
const controller = new AbortController();
component.addEventListener('click', handler, { signal: controller.signal });
// コンポーネント破棄時
controller.abort();
出力レポート
# パフォーマンス分析レポート
## サマリー
- **Critical**: 2件(即時対応必須)
- **High**: 4件(短期対応)
- **Medium**: 6件(中期改善)
## Critical 問題
### [CRITICAL] N+1 クエリ問題
**場所**: api/posts.ts:45-52
**影響**: 100件のデータで101回のクエリ実行
**レスポンス時間**: 2.5秒 → 0.3秒(88%改善可能)
### [CRITICAL] O(n²) アルゴリズム
**場所**: utils/search.py:23
**影響**: 10,000件で100,000,000回の比較
**実行時間**: 45秒 → 0.5秒(98%改善可能)
## 最適化提案
1. **データベースクエリ**: Eager loading使用
2. **アルゴリズム**: ハッシュテーブル活用
3. **キャッシング**: Redis導入
4. **非同期処理**: Promise.all で並列化
ベストプラクティス
- 計測: プロファイリングツール使用
- ボトルネック特定: 最も影響の大きい部分から最適化
- トレードオフ: 可読性とのバランス
- 継続的監視: APM ツール導入
バージョン情報
- スキルバージョン: 1.0.0
- 最終更新: 2025-01-22
More from ntaksh42/agents
pptx-generator
Generate PowerPoint presentations with slides, charts, and formatting. Use when creating presentations programmatically.
94document-formatter
Format and style documents with consistent formatting. Use when standardizing document formatting or cleaning up text.
48presentation-creator
Marpを使用した提案資料・比較検討資料の作成スキル。課題提示、複数案の比較検討、メリット・デメリット整理を含む資料を作成する。使用場面:(1) 技術選定や方式比較の検討資料、(2) 提案書・企画書、(3) 問題解決策の提示、(4) 意思決定を支援するドキュメント。作成完了後は必ずサブエージェントでレビューを実施する。
29pdf-processor
Process, extract, and generate PDF documents with text extraction and form handling. Use when working with PDF files or extracting PDF content.
22ai-feedback-loop-optimizer
AIフィードバックループ最適化スキル。プロンプト→出力→評価→改善の反復サイクルを自動化。段階的改善、A/Bテスト、収束判定、ベスト出力選択で最高品質の結果を生成。
7prompt-engineering-helper
LLMプロンプトの最適化・テスト支援スキル。プロンプトのパフォーマンス評価、改善提案、A/Bテスト、ベストプラクティス適用、再現性検証を行います。
7