mcpField
E
extreme-software-optimization

extreme-software-optimization

github.com/pedronauck開発644284 回インストール1 週間前に更新
リポジトリ

extreme-software-optimization について

開発者向けのソフトウェア最適化スキルです。プロファイリングと動作不変の検証を先に行い、評価表で候補を選んで一つずつ変更します。

主な機能

  1. 01変更前のベンチマークとプロファイリング
  2. 02ゴールデン出力による動作不変の確認
  3. 03最適化候補のスコア評価
  4. 04段階別の最適化パターン
  5. 05言語別のプロファイリングガイド

活用シーン

  1. 01測定に基づく性能ボトルネックの特定
  2. 02最適化案の評価
  3. 03コード変更後の動作確認

インストール

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

$npx skills add https://github.com/pedronauck/skills --skill extreme-software-optimization

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
ADVANCED.md
LANGUAGE-SPECIFIC.md
METHODOLOGY.md
TECHNIQUES.md

詳細

極限ソフトウェア最適化

唯一のルール: まずプロファイリングを行います。動作が変わっていないことを証明します。一度に変更するのは1つだけです。

ループ(必須)

1. BASELINE    → hyperfine --warmup 3 --runs 10 'command'
2. PROFILE     → cargo flamegraph / py-spy / clinic flame
3. PROVE       → Golden outputs + isomorphism proof per change
4. IMPLEMENT   → Score ≥ 2.0 only, one lever per commit
5. VERIFY      → sha256sum -c golden_checksums.txt
6. REPEAT      → Re-profile (bottlenecks shift)

改善機会マトリクス

ホットスポット影響度(1-5)確信度(1-5)工数(1-5)スコア
func:line××÷影響度×確信度/工数

ルール: スコアが2.0以上の場合のみ実装します。

同型性の証明テンプレート

すべての変更について、以下を記録します。

## Change: [description]
- Ordering preserved:     [yes/no + why]
- Tie-breaking unchanged: [yes/no + why]
- Floating-point:         [identical/N/A]
- RNG seeds:              [unchanged/N/A]
- Golden outputs:         sha256sum -c golden_checksums.txt ✓

パターンの段階(クイックリファレンス)

段階1:すぐに取り組める改善
パターン適用する場面同型性
N+1 → バッチ処理逐次フェッチ結果は同じで、往復回数が少ない
線形探索 → HashMapキーによる検索O(n)→O(1)。順序が変わる場合があります
遅延評価使用されない可能性のある値最終的な値は同じ
メモ化繰り返し呼び出される純粋関数キャッシュ値=再計算値
バッファー再利用反復ごとの割り当てループ内でゼロコピー
段階2:アルゴリズム
パターン変更確認事項
二分探索O(n)→O(log n)入力がソート済みであること
ツーポインター法O(n²)→O(n)入力に構造があること
累積和O(n)→O(1) のクエリデータが静的であること
優先度付きキューO(n)→O(log n)上位k件の抽出/スケジューリング
段階3:データ構造
構造用途
HashMap単一要素の検索
BTreeMap範囲検索
SmallVec通常は要素数が少ないコレクション
アリーナ多数の割り当てと一括解放
ブルームフィルターメンバーシップの事前フィルター

カタログ全文: TECHNIQUES.md


言語別チートシート

言語CPUプロファイル問題箇所の検索
Rustcargo flamegraphrg '\.clone\(\)' --type rust
Gogo tool pprof /debug/pprof/profilerg 'interface\{\}' --type go
TSclinic flame -- node app.jsrg 'JSON\.(parse|stringify)' --type ts
Pythonpy-spy record -o flame.svg -- python script.pyrg '\.iterrows\(\)' --type py

言語別ガイド全文: LANGUAGE-SPECIFIC.md


アンチパターン(絶対に行わない)

✗理由
プロファイリングせずに最適化するホットスポットではない箇所に労力を費やします
1つのコミットで複数の変更を行うリグレッションの原因を特定できません
改善すると決めつける変更前後の測定が必要です
「ついでに」動作を変更する同型性の保証が崩れます
ゴールデン出力の取得を省略するリグレッションを検出できません

チェックリスト(最適化を行う前に)

  • ベースラインを取得済み(p50/p95/p99、スループット、メモリ)
  • プロファイリング済み:ホットスポットが時間割合の上位5件以内
  • 改善機会スコアが2.0以上
  • ゴールデン出力を保存済み
  • 同型性の証明を記述済み
  • 変更する要素は1つだけ
  • ロールバック計画:git revert <sha>

ツールコマンド

# Benchmark
hyperfine --warmup 3 --runs 10 'command'

# Profile
cargo flamegraph                           # Rust CPU
heaptrack ./binary                         # Allocation
strace -c ./binary                         # Syscalls

# Verify
sha256sum golden_outputs/* > golden_checksums.txt
sha256sum -c golden_checksums.txt          # After changes

参考資料

必要な情報参考資料
最適化手法の完全なカタログTECHNIQUES.md
ステップごとの手法METHODOLOGY.md
言語別ガイドLANGUAGE-SPECIFIC.md
上級編(ラウンド2以降)ADVANCED.md

反復ラウンド

  • ラウンド1: 標準(N+1、インデックス、バッチ処理、メモ化)
  • ラウンド2: アルゴリズム(DP、凸最適化、半環)→ ADVANCED.md
  • ラウンド3: 高度な手法(接尾辞オートマトン、リンクカット木)

各ラウンドで、新たにプロファイリングを行い、新しいホットスポットを見つけ、新しいマトリクスを作成します。

コメント