Claude-skill-registry analyze-perf

Go プロジェクトのパフォーマンスを計測・分析する。「パフォーマンス計測」「ベンチマーク」「perf」「性能測定」「プロファイリング」「最適化提案」「パフォーマンス分析」などで起動。ベンチマーク実行、プロファイリング、改善案の提示をサポート。

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/analyze-perf" ~/.claude/skills/majiayu000-claude-skill-registry-analyze-perf && rm -rf "$T"
manifest: skills/data/analyze-perf/SKILL.md
source content

Analyze-Perf

Go プロジェクトのパフォーマンスを計測・分析し、改善案を提示します。

引数

  • [パッケージパス]
    : 対象パッケージ(例: ./internal/handler)
  • --bench
    : ベンチマークのみ実行
  • --profile
    : プロファイリングを実行
  • --help
    : ヘルプを表示

実行フロー

1. 対象コードの特定
   ↓
2. ベースライン測定
   ↓
3. ボトルネック分析
   ↓
4. 改善案提示
   ↓
5. ユーザーと方針決定
   ↓
6. 修正実装
   ↓
7. 効果測定

実行手順

1. ベンチマーク実行

# 基本的なベンチマーク
go test -bench=. -benchmem ./...

# 特定パッケージのベンチマーク
go test -bench=. -benchmem ./internal/handler

# 複数回実行して安定した結果を取得
go test -bench=. -benchmem -count=3 ./... | tee baseline.txt

2. プロファイリング

# CPU プロファイル
go test -bench=. -cpuprofile=cpu.prof ./...
go tool pprof cpu.prof

# メモリプロファイル
go test -bench=. -memprofile=mem.prof ./...
go tool pprof mem.prof

# pprof コマンド
# top    - 実行時間が最も長い関数を表示
# list   - 特定関数のソースコード行ごとの分析
# web    - グラフ形式で可視化

3. 結果レポート

## パフォーマンス分析結果

### ベンチマーク結果
- BenchmarkXxx: {N} ns/op
- メモリアロケーション: {M} B/op
- アロケーション回数: {K} allocs/op

### 特定されたボトルネック
1. {関数名}: {問題の説明}
2. {関数名}: {問題の説明}

### 改善案
| 提案 | 内容 | 期待される改善 |
|------|------|---------------|
| 1 | {改善内容} | {効果} |
| 2 | {改善内容} | {効果} |

どの改善案を適用しますか?

改善案の観点

観点改善例
データ構造slice、map の適切な選択
アルゴリズム計算量の削減、キャッシング
並行処理goroutine、channel、ワーカープール
メモリ管理sync.Pool、スライスの事前確保
文字列操作strings.Builder の使用
PGOProfile-Guided Optimization(Go 1.22+)

期待される改善率の目安

最適化内容期待される改善率
スライスの事前確保メモリ 30-50% 削減
ポインタレシーバCPU 20-40% 高速化
strings.Builder文字列操作 2-5x 高速化
sync.Poolアロケーション 50-80% 削減
並行処理最適化スループット 2-10x 向上
PGO全体 2-14% 高速化

benchstat による比較

# 最適化前
go test -bench=. -benchmem -count=3 ./... | tee before.txt

# 最適化後
go test -bench=. -benchmem -count=3 ./... | tee after.txt

# 比較
benchstat before.txt after.txt

重要な注意事項

  • ✅ 最適化前に必ずベンチマークで現状を測定
  • ✅ 修正前後のベンチマーク結果を比較して効果を確認
  • ✅ 実際にボトルネックとなっている箇所に集中
  • ❌ パフォーマンス向上のために可読性を大きく損なわない
  • ❌ 早すぎる最適化を避ける