遅いコードのボトルネック特定と改善案出し

処理が遅い原因を根拠と検証手順付きで順序立てて特定する

プロンプト · 変数 3個

あなたは、サービスの処理遅延の報告を受けて原因特定と改善を行ってきた、経験豊富なバックエンドエンジニアです。

以下のコードの動作が著しく遅くなっています。実行環境は {{実行環境}}、実際に扱うデータは {{データ規模}} です。

修正後のコードをいきなり提示するのではなく、以下の順番で整理して教えてください。1) このコードで最も時間がかかっていると思われるボトルネックの候補3つ(可能性が高い順) 2) 各候補についてそう判断した根拠(ループ回数、データ構造、I/O(DB・ファイル・ネットワーク)のどれに起因するか) 3) その候補が真の原因であるかを私自身が検証する方法(どこに何を仕込んでどの数値を確認すべきか) 4) 計測結果が予想通りだった場合の修正アプローチと期待される改善効果の大きさ。

上記のデータ規模において体感差が出ないような微細な最適化は省いてください。根拠なしに「この書き方のほうが高速です」と断定せず、判断に必要だがコードからは読み取れない情報(テーブルのインデックス有無、呼び出し頻度、キャッシュの有無など)があれば、必要な情報として箇条書きで挙げてください。

コード: """ {{コード}} """

コピーしたらここに貼り付け · ChatGPT・Claudeはプロンプト入りで開きます ChatGPTで開く ↗Claudeで開く ↗Geminiで開く ↗ ビルダーで編集 授業用カード画像を保存

このプロンプトには個人情報が入りうる変数があります。実名・番号・会社名は仮名に置き換えてください。

なぜこう書くのか

役割
あなたは、サービスの処理遅延の報告を受けて原因特定と改善を行ってきた、経験豊富なバックエンドエンジニアです。
文脈
以下のコードの動作が著しく遅くなっています。実行環境は {{実行環境}}、実際に扱うデータは {{データ規模}} です。
手順
修正後のコードをいきなり提示するのではなく、以下の順番で整理して教えてください。1) このコードで最も時間がかかっていると思われるボトルネックの候補3つ(可能性が高い順) 2) 各候補についてそう判断した根拠(ループ回数、データ構造、I/O(DB・ファイル・ネットワーク)のどれに起因するか) 3) その候補が真の原因であるかを私自身が検証する方法(どこに何を仕込んでどの数値を確認すべきか) 4) 計測結果が予想通りだった場合の修正アプローチと期待される改善効果の大きさ。
制約
上記のデータ規模において体感差が出ないような微細な最適化は省いてください。根拠なしに「この書き方のほうが高速です」と断定せず、判断に必要だがコードからは読み取れない情報(テーブルのインデックス有無、呼び出し頻度、キャッシュの有無など)があれば、必要な情報として箇条書きで挙げてください。
入力資料
コード: """ {{コード}} """

コードのパフォーマンス改善プロンプトを「速く直して」から始めると、AIは表面的な書き換えに終始しがちです。ループの内包表記化や変数の整理など細かい修正ばかりが並び、実際に時間を浪費している「ループ内でのDBクエリ(N+1問題など)」が見落とされることがあります。計測なしで着手すると、効果のない修正ばかりが増えてしまいます。

役割を「原因特定を行ってきたエンジニア」に設定することで、回答の質が大きく変わります。コードレビュアーに尋ねると変数名やスタイルの指摘が先に出てきますが、障害原因の調査担当に尋ねれば「どこで時間が消費されているか」に着目します。同じコードでも、誰に尋ねるかで回答の着眼点が変わるためです。

ステップを4つに限定した点がこのプロンプトの肝です。候補を順位付けさせると必ず根拠が必要になり、検証手順まで求めれば「推測」と「事実」を切り離せます。特に3番の検証手順は、AIの修正案を鵜呑みにしてデプロイするのを防ぎ、実際の数値を見て判断する習慣を作ります。

コンテキストとしての2つの変数も重要です。400万行と400行では問題の本質がまったく異なります。制約で「体感差が出ない微細な最適化は省く」としたのはこの規模感を基準にフィルタリングさせるためであり、「見えない情報はリスト化する」ことで、インデックスの有無も知らずにインデックス追加を提案してくるような回答を防ぎます。コードは """ で囲み、コメントなどがプロンプトの指示として誤認されるのを防ぎます。

用語が分からなければAha AIで: chain-of-thought, hallucination

悪い例との比較

よくある悪い例

このコード遅すぎるから最適化して for order in orders: ... (コード貼り付け)

データ規模がわからないため、AIは一般論しか返せません。リストをセットに変えたりループを内包表記に書き直したりしたコードが返ってきますが、実行時間はほぼ変わりません。ループ内のDBアクセスが真の原因であっても、根拠を求めていないため他の細かい提案に埋もれてしまい、何の効果測定をすべきかも分からないままになります。

バリエーション

コードではなく画面全体の描画が遅い場合

コードではなく画面全体の描画が遅い場合

自社サービスで特定の画面の表示が遅いという報告が届きました。実行環境は {{実行環境}}、データ規模は {{データ規模}} です。コードを細かく見る前に、この状況で原因となり得るボトルネックをサーバー・データベース・ネットワーク・ブラウザに分類してリストアップし、それぞれを確認する手順と優先順位を教えてください。確認が容易なものから順に並べてください。

どのレイヤー・どのコードが問題なのか見当もつかないときに使います。切り分けの順序をあらかじめ把握しておくことで、あてもなくコードを探る時間を削減できます。

高速化修正による副作用(デグレーション)を確認したい場合

高速化修正による副作用(デグレーション)を確認したい場合

以下は、パフォーマンス改善を目的に私が修正したコードです。速くなったかどうかではなく、修正によって処理結果や挙動が変わってしまった可能性がないかだけを検証してください。結果の順序、重複の扱い、例外発生時の挙動、同時リクエスト時の挙動をそれぞれ確認し、問題が発生し得る入力パターンの例を挙げてください。

""" {{コード}} """

パフォーマンス目的の修正は、意図せず元の挙動を壊してしまうことがよくあります。速度の検証とロジックの正確性の検証は、分けてプロンプトを投げるほうが確実です。

モデル別の注意

実際にプロファイリングを行って計測した実行時間や数値があれば、一緒に入力してください。数値がない場合、AIはコードの見た目から推測するしかなくなります。

関連プロンプト

最終更新 2026-09-02 · 誤りがありますか? 知らせる