2012-02-01 9 views
6

私のWPFアプリケーションには、新しい画像が準備できたらいつでもUIを更新しながら、多数の画像を背景にレンダリングする機能があります。Application.Runは、アプリケーションのCPU消費関数の上位です。私は何を最適化できますか?

Application.Runは43%で最も機能している機能であり、「2番目に高価な」スポットは3つのグラフィックスAPIで共有され、それぞれ6%であることが示されています。

Application.Runで過ごす時間が長くなる原因は何でしょうか?この方法の中核はアプリのメインディスパッチャーを実行しているようですが、ディスパッチャーが何をしているのか分かりません。より詳細なプロファイルを取得できますか?

注:System.Windows.Application.Runを意味します。

答えて

4

ビジュアルプロファイラ(WPF Performance Suiteの一部)はCPU使用率のより詳細なブレークダウンを提供することができることが判明:

CPU usage breakdown

これは、その原因不明のCPU使用率の半分がダウンにあることを示していますレンダリングスレッド(おそらく私はUIをあまり頻繁に更新すべきではありません)、残りの多くはInvokeコールバック(私の場合は避けられない)に費やされています。

+0

右。プログラムは、サーカスの一輪車主義者として、激しいペダルを踏みながら、歩き方を教えてくれる背の高いアクロバットのバランスを取ると考えてください。彼は問題ではない、問題はより高いです。いくつかの* [stackshots](http://stackoverflow.com/questions/375913/what-c​​an-i-use-to-profile-c-code-in-linux/378024#)で同じ情報を得ることができます。 378024)*を使用して、どのコード行が犯人であるかを正確に伝えます。 –

関連する問題