mcpField
P
perf

perf

github.com/johnlindquist開発2640 回インストール45 週間前に更新
リポジトリ

perf について

ベンチマーク、Node.js のプロファイリング、Lighthouse 監査を扱う開発者向けのパフォーマンス分析スキルです。AI によるコードやプロファイルの分析に加え、ホットスポットの特定や変更前後の比較例も含みます。

主な機能

  1. 01コードの計測とベンチマーク
  2. 02Node.js の CPU とメモリのプロファイリング
  3. 03Lighthouse の性能監査レポート作成
  4. 04AI によるコードとプロファイル出力の分析
  5. 05ホットスポットの特定と最適化結果の比較

活用シーン

  1. 01Node.js スクリプトの実行時間とメモリ使用量を測定
  2. 02CPU またはメモリのホットスポットを特定
  3. 03Web サイトを監査してレポートを出力
  4. 04コードの性能を確認し最適化結果を比較

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/johnlindquist/claude --skill perf

インストール後、Claude Code で/perfを入力して読み込まれたか確認します。

詳細

パフォーマンスプロファイラー

コードのパフォーマンスをプロファイリング、ベンチマーク、最適化します。

前提条件

# Node.js for profiling
node --version

# Lighthouse for web perf
npm install -g lighthouse

# Gemini for analysis
pip install google-generativeai
export GEMINI_API_KEY=your_api_key

ベンチマーク

クイックベンチマーク
# Time a Node.js script
time node script.js

# With memory
/usr/bin/time -l node script.js  # macOS
/usr/bin/time -v node script.js  # Linux
Node.js パフォーマンスフック
// benchmark.js
const { performance, PerformanceObserver } = require('perf_hooks');

const obs = new PerformanceObserver((list) => {
  console.log(list.getEntries()[0].duration);
});
obs.observe({ entryTypes: ['measure'] });

performance.mark('start');
// Code to benchmark
yourFunction();
performance.mark('end');
performance.measure('duration', 'start', 'end');
コンソールのタイミング計測
console.time('operation');
// Code to time
console.timeEnd('operation');  // Prints: operation: 123.456ms

Node.js のプロファイリング

V8 プロファイラー
# Generate profile
node --prof script.js

# Process the log
node --prof-process isolate-*.log > profile.txt
インスペクトモード
# Start with inspector
node --inspect script.js

# Break on start
node --inspect-brk script.js

# Open Chrome DevTools
open chrome://inspect
メモリプロファイリング
# Heap snapshot
node --heapsnapshot-signal=SIGUSR2 script.js
# Then: kill -USR2 <pid>

# Expose GC for testing
node --expose-gc script.js

Lighthouse 監査

基本監査
# Full audit
lighthouse https://example.com

# Output to JSON
lighthouse https://example.com --output=json --output-path=report.json

# Output to HTML
lighthouse https://example.com --output=html --output-path=report.html

# Specific categories
lighthouse https://example.com --only-categories=performance

# Mobile vs Desktop
lighthouse https://example.com --preset=desktop
lighthouse https://example.com --preset=mobile  # default
パフォーマンスのみ
lighthouse https://example.com \
  --only-categories=performance \
  --output=json \
  --output-path=perf-report.json
Chrome フラグ
# Headless
lighthouse https://example.com --chrome-flags="--headless"

# Custom viewport
lighthouse https://example.com --chrome-flags="--window-size=1920,1080"

AI によるパフォーマンス分析

コードのパフォーマンスを分析する
CODE=$(cat slow-function.ts)

gemini -m pro -o text -e "" "Analyze this code for performance issues:

$CODE

Identify:
1. Time complexity issues
2. Memory leaks or bloat
3. Unnecessary operations
4. Opportunities for optimization
5. Caching opportunities

Provide specific recommendations with code examples."
プロファイル出力を分析する
PROFILE=$(cat profile.txt)

gemini -m pro -o text -e "" "Analyze this Node.js profile:

$PROFILE

Identify:
1. Hot functions (most time spent)
2. Potential bottlenecks
3. Optimization opportunities
4. Priority of fixes"

ホットスポットの特定

CPU のホットスポット
# Record CPU profile
node --cpu-prof script.js

# Analyze generated .cpuprofile
# Open in Chrome DevTools or use:
npx speedscope *.cpuprofile
メモリのホットスポット
# Find large objects
node --heapsnapshot-signal=SIGUSR2 app.js

# Use clinic.js
npx clinic doctor -- node script.js
npx clinic flame -- node script.js
npx clinic bubbleprof -- node script.js
バンドル分析
# Webpack
npx webpack-bundle-analyzer stats.json

# Vite
npx vite build --report

# Generic
du -sh dist/*
ls -lhS dist/*.js

よくあるパターン

確認すべきアンチパターン
gemini -m pro -o text -e "" "Check this code for common performance anti-patterns:

$(cat src/*.ts)

Look for:
- Synchronous I/O in hot paths
- Repeated DOM queries
- Unnecessary re-renders
- N+1 query patterns
- Memory leaks in closures
- Blocking the event loop"
最適化チェックリスト
gemini -m pro -o text -e "" "Create a performance optimization checklist for:

Application type: [web app / API / CLI]
Stack: [your stack]
Current issues: [symptoms]

Include priority order and estimated impact."

比較ベンチマーク

変更前と変更後
#!/bin/bash
# benchmark-compare.sh

echo "=== Before optimization ==="
git checkout main
npm install
time npm run benchmark

echo "=== After optimization ==="
git checkout optimization-branch
npm install
time npm run benchmark
A/B スクリプト
#!/bin/bash
# Run same benchmark multiple times
for i in {1..10}; do
  echo "Run $i:"
  node benchmark.js
done | tee results.txt

# Calculate average
grep "time:" results.txt | awk '{sum+=$2; n++} END {print "Average:", sum/n}'

ベストプラクティス

  1. まず計測する - データなしに最適化しないでください
  2. 本番環境でプロファイリングする - 開発環境とはパフォーマンスが異なります
  3. ベンチマークを自動化する - 時系列で追跡します
  4. ホットパスに集中する - 80/20 の法則
  5. 対象デバイスでテストする - 特にモバイル
  6. デプロイ後に監視する - 改善を確認します
  7. ベースラインを記録する - 「良好」の基準を把握します

コメント