アプリケーションでパフォーマンスの問題が発生しています。基本的にボタンをクリックすると、リストにデータバインドされたデータが入力され(これは大量のデータのために仮想化されます)、次に別のボタンをクリックして、関連するリストビューに行を追加します。UIで実際に何が起こっているかを説明するだけでよいと思うので、漠然としています。
これが私が知っていることです:
- Win 7 Proを実行している頑丈な開発用コンピューターでも、適切な仕様のXP SP3マシンでも、この問題は発生しません。4GBのRAMとCorei5CPU(XPデスクトップよりもはるかに強力)を備えたWin 7エンタープライズを実行している特定のブランドのラップトップ(Lenovo ThinkPad)でのみ表示されます。
- 前述の調査結果のため、これがコードの問題であるとは考えていません。
- MicrosoftのPerfViewツールを使用してプロファイルを作成し、 UIElement.Measure (コードによって直接呼び出されることはありません)への非常に多くの呼び出しであると想定されることに気付きました。これは、他のマシンでプロファイルを作成したときに表示されません。
- ラップトップの解像度は1360x780なので、解像度が低いために、データバインディングが原因で、GPUがコントロールを不必要にレンダリングしているのではないかと思いました(これにより、Measure()の呼び出しが多数発生する可能性があります)。ラップトップのディスプレイを24インチモニターに拡張しましたが、改善は見られませんでした。
今のところ、問題はGPUにあると思います。ドライバーを更新しましたが、改善はありません。
- コードの問題ではないと思いますが、「SuspendLayout()」に相当するWPFはありますか?
- GPUのパフォーマンスをプロファイリングして、特定のプロセス中に打撃を受けているかどうかを確認する方法はありますか?
- (ファーショット)コンピュータ固有のように見える同様のパフォーマンスの問題と、それらを追跡する方法についての提案があった人はいますか?
これが漠然とした質問である場合は申し訳ありません。SOの使用要件に準拠するようにしました。さらに情報が必要な場合はお知らせください。
補遺と同じように、プログラムはWPF、C#4.0を使用していますが、問題はTelerikコントロールにあるようです(ただし、他の場所で問題なく使用しているため、疑わしいとは思いません)。