# プロファイリング
初級
プログラマー
プロジェクトを**プロファイリング**して、実行時のパフォーマンスをチェックし、問題を発見できます。Stride のプロファイラーや、Visual Studio のパフォーマンス プロファイラーなどの外部プロファイリング ツールを使用できます。

## Stride のプロファイル
Stride のプロファイラーは、実行時のパフォーマンス コストの変化を表示します。これは、ボトルネックを特定して根本原因を明らかにするのに役立ちます。
スクリプトをシーンに追加することによって、プロジェクトをプロファイリングできます。
1. [Asset view]で、 をクリックして[Scripts]>[Game Profiler]を選択します。

2. [New script]ダイアログが開きます。既定の情報のままにします。

GameProfiler スクリプトがプロジェクトに追加されます。
3. スクリプトを保存するかどうかを確認するメッセージが表示されたら、[Save]をクリックします。
4. アセンブリを再ロードするかどうかを確認するメッセージが表示されたら、[Reload]をクリックします。
5. [Scene view]でエンティティを選択します。使用するエンティティはどれでもかまいません。
6. [Property grid]で、[Add component]をクリックし、**GameProfiler** を選択します(これは、ステップ 1 と 2 で追加したスクリプトです)。

コンポーネントとしてエンティティに GameProfiler スクリプトがアタッチされます。
7. プロジェクトをビルドして、アプリケーションを実行します。
8. 実行時に**左 Ctrl + 左 Shift + P** キーを押してプロファイラーを起動します。

>[!NOTE]
>プロファイラーが表示するデータの種類を変更できます。詳細については、[Stride プロファイラー API のドキュメント](xref:Stride.Core.Diagnostics.Profiler)を参照してください。
## 外部プロファイリング ツールを使用する
外部プロファイリング ツールを使用して、プロジェクトをプロファイリングできます。
| プロファイラー | 種類 | プラットフォーム |
| ---- | ---- | -----|
| [Visual Studio プロファイラー](https://msdn.microsoft.com/ja-jp/library/mt210448.aspx) | Visual Studio の機能 | デスクトップとモバイル |
| [Xamarin プロファイラー](https://www.xamarin.com/profiler) | Xamarin Studio で配布されるスタンドアロン ツール | モバイル |
| [RenderDoc](https://renderdoc.org/builds) | スタンドアロン | デスクトップとモバイル |
### Visual Studio プロファイラーを使用する
Visual Studio には、一般的なパフォーマンスの問題を識別できる強力な組み込みプロファイリング ツールがあります。
1. Visual Studio で、プロジェクト ソリューション (`.sln`) ファイルを開きます。
2. プロファイラーを開くには、**Alt + F2** キーを押すか、タスク バーで[分析]>[パフォーマンス プロファイラー]をクリックします。

3. [プロファイラー]ウィンドウで、実行するプロファイリング ツールを選択します。

複数のプロファイリング ツールを同時に実行できます。
4. プロファイラーを起動するには、[パフォーマンス プロファイラー]タブの下部で、[開始]をクリックします。

Visual Studio がアプリケーションを実行して、プロファイリングを開始します。
Visual Studio プロファイラーの詳細については、[MSDN のドキュメント](https://msdn.microsoft.com/ja-jp/library/mt210448.aspx)を参照してください。
## よくあるボトルネック
CPU と GPU は異なる種類のデータを処理するので、通常、ボトルネックの原因になっている部分を識別するのは簡単です。
GPU のほとんどの問題は、ポストエフェクト、ライティング、シャドウ、テッセレーションなど、処理量の多いレンダリング手法をアプリケーションが使用すると発生します。問題を識別するには、レンダリング機能を無効にします。
CPU のボトルネックであると思われる場合は、シーンの複雑さを減らします。
グラフィックスの場合:
* ゲームの解像度を下げます。
* ポストエフェクトの品質を下げます。
* ライトの数およびシャドウ マップのサイズを減らします。
* シャドウ マップのサイズを小さくします。
* カリング技法を使用して、レンダリングされるオブジェクトと頂点の数を減らします。
テクスチャの場合:
* 低速のデバイスでは圧縮されたテクスチャを使用します。
* 個別の画像ではなく、スプライト シートを使用します。
* 異なるテクスチャではなく、テクスチャ アトラスを使用します。