私は長いキャンバスに線を描いています(ストリップチャートを考えます)。低レベルのジオメトリクラスを使用してフリーズするなど、パフォーマンスがかなり良く調整されています。これによりパフォーマンスは飛躍的に向上しましたが、キャンバスに数千のアイテムをロードするのに数秒かかります。アプリケーションのパフォーマンス分析を行ったところ、canvas.children.add()
を呼び出すたびに大きな割合を占めるように見えました。私はこれが軽量なコールでなければならないことを読んできました。そして、私はそれを何回も一つのメソッドで呼んでいるので、重いものをやろうとしてはいけません...これはおそらく他の理由があるかもしれません長時間?そして私はそれをスピードアップするかもしれませんか?WPFキャンバスのパフォーマンス - children.addが何度も呼び出される
パフォーマンスはひどいわけではありませんが、大きなデータセットに対処する必要がある場合は、後で問題になる可能性があります。
このサンプルでは1400回、現代/高速ラップトップではほぼ3秒のCPU時間がかかるようです。
しかし、キャンバスは他のコントロールのヒエラルキーに含まれています。そのため、キャンバスがこれに貢献しているかどうかは不思議です。
補足:グリッドの親コンテナを塗りつぶすように設定されているため、キャンバスに特定の高さを設定していません。これが問題の原因となりますか?
http: ://msdn.microsoft.com/en-us/library/system.windows.media.streamgeometry.aspxストリームDrawing Contextよりも軽量の構造であるジオメトリ。 –
うまく、すでにストリームのジオメトリを使用して、良い結果。ありがとう –