2010年8月2日月曜日

番外編:パフォーマンス

バージョンβ0.04公開しました。
http://wtwitter.codeplex.com/
若干のUIの改善とパフォーマンス改善です。
ちなみにソースコードはなんかUPLOADに失敗したのでまだあげていません。

久しぶりの更新ですが、
この間にパフォーマンスについていろんなサイトで調べたことと若干の経験からわかったことを元に
メモ程度に箇条書きしたいと思います。
私自身ではパフォーマンス計測とかの検証はしていないのであしからず。

・WPFの描画は、アニメーションや透過、エフェクトなどを多用しなければそんなに遅くない(※1)
・パフォーマンスのネックになりやすいのはレイアウト
・今のクライアントの作りでは、ListBoxに『可変サイズの』ListBoxItemをたくさんおいているのが一番の原因だったと思われる。
 高さ固定ならば見えない部分のサイズ計測は不要なので仮想化の恩恵にあずかれるが、
 可変だと実際に配置して計算してみないとわからないので遅い。
・レイアウトがネストすると指数関数的?に計算量が増えるので、
逆にレイアウトを簡素化できれば、表示量はあまり減らさなくても大きく軽量化できる。

※1
WPFはGPU(グラフィックボード)を描画に使うので、
それなりに新しいGPUを積んでいれば描画は早い。
ただし、GPUを使うようなソフト(たとえばWindowモードにした3Dゲームなど)を表示していたら
描画は遅くなる。