mcpField
O
optimizing-code

optimizing-code

github.com/dralgorhythm開発12870 回インストール14 週間前に更新
リポジトリ

optimizing-code について

動作を変えずにソフトウェアの性能を改善するコーディングスキルです。変更の前後でベンチマークとプロファイリングを行い、一般的な最適化領域を検討します。

主な機能

  1. 01最適化前のベンチマーク
  2. 02プロファイリングによるボトルネック特定
  3. 03変更後の効果測定
  4. 04アルゴリズムとデータ構造の指針
  5. 05キャッシュ・データベース・メモリの手法

活用シーン

  1. 01遅いクリティカルパスの特定
  2. 02コード変更による性能向上の検証
  3. 03高コストなデータベースクエリの削減
  4. 04大容量ファイル処理のメモリ使用量削減

インストール

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

$npx skills add https://github.com/dralgorhythm/claude-agentic-framework --skill optimizing-code

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

詳細

コードの最適化

最適化の心得

最適化では、動作を変えずにパフォーマンスを改善します。必ず前後で測定してください。

基本ルール

  1. まず測定する:ベンチマークなしで最適化しないでください
  2. 推測する前にプロファイルする:実際のボトルネックを特定してください
  3. 適切な対象を最適化する:クリティカルパスに注力してください
  4. 最適化後に測定する:最適化が効果を発揮したことを確認してください

ワークフロー

  • ベンチマーク:パフォーマンス指標のベースラインを確立します
  • プロファイル:実際のボトルネックを特定します
  • 仮説を立てる:どの最適化が効果的でしょうか?
  • 実装する:変更を加えます
  • 測定する:改善を確認します
  • 記録する:最適化の内容と結果を記録します

よくある最適化

アルゴリズムの計算量
  • O(n²) を O(n log n) または O(n) に置き換えます
  • 適切なデータ構造を使用します(検索には Set、キーと値の組には Map)
キャッシュ
// Memoization
const cache = new Map<string, Result>();

function expensiveCalculation(input: string): Result {
  if (cache.has(input)) {
    return cache.get(input)!;
  }
  const result = /* expensive work */;
  cache.set(input, result);
  return result;
}
データベースクエリ
  • 頻繁にクエリされる列にインデックスを追加します
  • N+1 クエリを避けます(イーガーローディングを使用します)
  • 大きな結果セットにはページネーションを使用します
メモリ
  • ループ内で不要なオブジェクトを作成しないようにします
  • 大きなファイルにはストリーミングを使用します
  • 使用後は参照を解放します

プロファイリングツール

# Node.js
node --prof app.js
node --prof-process isolate-*.log

# Python
python -m cProfile -s cumtime script.py

# Go
go test -bench=. -cpuprofile=cpu.prof
go tool pprof cpu.prof

避けるべきアンチパターン

  • 早すぎる最適化(ベンチマークなし)
  • マイクロ最適化(影響がわずか)
  • 実行頻度の低いパスの最適化
  • わずかな効果のために可読性を犠牲にする

コメント