WPFでは可能な範囲でGPUを活用(ハードウェア レンダリング)しますが、BitmapEffectのように必ずCPUで処理(ソフトウェア レンダリング)されるコンポーネントもあります。また、表示されないくても中間レンダリング(IRT)がCPUで行われていることもあります。最適化するにはソフトウェア レンダリングを最小にすることが重要です。
Windows SDKに含まれている最適化ツールの一つであるPerfotatorを使うと、自分のアプリケーションのレンダリングがどのように行われているのか、フレームレートはいくつかなどを確認でき、ソフトウェア レンダリング部分を紫色にしたり、3D描画をオフにするとパフォーマンスが向上するかなどを試すことができます。
PerforatorはプロファイルしたいWPFアプリケーションを起動してから、C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin\WpfPerf.exeを起動し、Microsoft.WpfPerformance.Perforatorを選択します。すると左側にそのWPFアプリの名前が表示されるので、それを選択します。アプリの名前が現れないときは[Refresh]ボタンを押して最新の情報に更新してみてください。
表示されるデータとオプションの説明を次に示します。
データ
説明
Frame Rate
フレームレート、毎秒の描画回数 回/秒
Dirty Rect Addition Rate
部分レンダリングの数
Software Render Targets
すべてがソフトウェアでレンダリングされているウィンドウの数
Hardware Render Targets
すべてがハードウェアでレンダリングされているウィンドウの数
Maximum SW IRTs per Frame
1フレームあたりの、ソフトウェアによる中関レンダーターゲット(IRT: Intermediate Render Target)の最大数
Maximum HW IRTs per Frame
1フレームあたりの、ハードウェアによる中関レンダーターゲット(IRT: Intermediate Render Target)の最大数
Estimated Video Memory Usage (MB)
ビデオメモリーの使用量(予測)
オプション
Draw software rendering with purple tint
ソフトウェアでレンダリングされている部分を紫色で描画する
Clear back-buffer before updating
描画処理の前にウィンドウを黒で初期化する
Show dirty region update overlay
部分的に再描画されている部分をオーバーレイで表示
Disable dirty region support
部分的な再描画を無効にする
Disable Opacity effects
半透明効果を無効にする
Disable per-primitive software fallback
プリミティブ単位のソフトウェアによる代替描画を無効にする
Disable high-quality image rescaling
高解像度画像の再スケールを無効にする
Disable 3D rendering
3Dレンダリングを無効にする
Enable Debug Control
デバッグ制御を有効にする