Skip to content
九月 29, 2009 / wychi

Enhance WPF Scrolling performance

今天在調試WPF scrolling的issue上, 總算有重大突破了..

原本在scrolling時, 只有3~10 fps的表現, 現在總算能達到30 fps的水準了

能達到這樣的表現真很開心, 努力了快一個月後, 總算沒交出白卷….

WPF scrolling這個議題在網路上有非常多的討論, 也已經有一些sample code / guideline了

以下的參考文件, 會是一個相當好的起點

歸結來起, 影響scrolling的兩個主要因素

  1. Cost of create/add/remove UI controls  => major factor
  2. Duration of each layout pass ( Measure / Arrange)

所以提出來的解法就是UI Virtualization & Container recycling

當然啦, 其它部分的配合還是相當重要的, ex: simplified template, fast data extraction.

除了實作之外, 如何量測scrolling performance也挺費心的

以下是我的做法, 不過我覺得這樣的方法過於間接, 無法直接標出問題點,  (歡迎其它人提出更好的方式….)

主要的調試工具有 Performance Profiling Tools for WPF (Perforator ,Visual Profiler), YourKit

用Perforator 來觀查每一次改動後的fps變化,

用Visual Profiler來看展開後的 visual tree 及 每一個UI element在layout上所佔用的時間

用YourKit中的CPU tracing來看 hot spot, 不過主要還是在觀察 MeasureOver() / ArrangeOver()這兩個function所佔用的時間

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: