optimization について
Optimizationは、測定とボトルネック分析を通じてシステム効率を高める開発スキルです。目標指標とベースラインの設定から、高効果の変更と再測定までを案内します。
主な機能
- 01測定可能な目標指標の定義
- 02再現可能なベースラインの作成
- 03リソースコストの特定
- 04アルゴリズムとアーキテクチャの確認
- 05マクロ最適化の優先
- 06再測定とリグレッション確認
活用シーン
- 01高レイテンシやメモリ使用量の調査
- 02ワークロード内のボトルネック特定
- 03ベースラインとの比較による性能変更の検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ 1jehuang/ jcode --skill optimizationインストール後、Claude Code で/optimizationを入力して読み込まれたか確認します。
詳細
最適化
システムを高速化、軽量化、スケーラビリティ向上、またはその他の方法で効率化するタスクには、このスキルを使用してください。
基本原則
適切に最適化するには、次のことを把握する必要があります。
- どの指標を目標にするのか
- 実際のボトルネックは何か
やみくもに最適化しないでください。
1. まず目標指標を定義する
コードを変更する前に、適切な測定ができていることを確認してください。
- 重要な指標を正確に特定してください。レイテンシ、スループット、メモリ、CPU、起動時間、コンパイル時間、クエリ数、トークン使用量、コストなどがあります。
- 都合のよい一部だけでなく、包括的に測定してください。
- 指標が正確で、実際のワークロードを代表していることを確認してください。
- すばやく反復できるよう、実行時間の短い測定を優先してください。
- 可能であれば、改善を検証できるよう、再現可能なベンチマークやスクリプトを作成してください。
2. ボトルネックを詳細に特定する
システムの各部分が何をしているかを、十分に特定できるようにしてください。
- 時間とリソースがどこに使われているかを確認できるよう、システムに計測を組み込んでください。
- 次の両方を活用してください。
- すばやいデバッグのためのアドホックな調査
- 後で分析や比較を行うためのログ記録された測定
- 明らかに遅いコンポーネントだけでなく、処理経路全体にわたって作業を特定してください。
- コストの発生源を説明できるだけの詳細なデータを確保してください。
ログやトレースを使って実行後に分析できる場合、ライブでの調査だけに頼るよりもはるかに効果的なことがよくあります。
3. 静的解析も活用する
最適化の問題すべてに、まず実行時プロファイリングが必要なわけではありません。コードの調査で問題が明らかになることもよくあります。
次の点を確認してください。
- 漸近計算量が適切でない
- アルゴリズムやデータ構造の選択が適切でない
- 不必要な処理の繰り返し
- 処理を行うレイヤーが適切でない
- アーキテクチャや制御フローが非効率
- 根本的に方向性が誤ったアプローチ
細部を調整する前に、漸近計算量が適切で、アルゴリズム全体に妥当性があることを確認してください。
4. マクロ最適化をマイクロ最適化より優先する
最大の効果が得られるものから優先してください。
- 既存の処理を少しだけ安くする前に、処理の種類そのものをなくしてください。
- 細かな低レベルの調整に注力する前に、アーキテクチャ、バッチ処理、キャッシュ、クエリパターン、アルゴリズムの選択、並列化、データ移動を改善してください。
- 目標とする指標から大きくかけ離れている場合は、マクロ最適化にもっと時間をかけてください。
マイクロ最適化が重要になるのは、主な非効率がすでに解消された後です。
推奨ワークフロー
- 成功を判断する指標を定義します。
- 現在のベースラインを再現します。
- 不足している場合は、測定と要因の特定を追加します。
- 最大のボトルネックを特定します。
- アルゴリズムやアーキテクチャ上の問題がないか確認します。
- 最も効果の大きい修正を適用します。
- 再測定します。
- 目標に達するか、トレードオフに見合わなくなるまで繰り返します。
守るべき指針
- 修正前後の根拠なしに、最適化したと主張しないでください。
- 間違った指標を最適化しないよう注意してください。
- 正確性、信頼性、保守性、セキュリティの低下に注意してください。
- 測定可能で、説明可能で、元に戻せる変更を優先してください。
コメント
Markdown 対応