如何测量WPF Silverlight FPS或渲染时间?

时间:2012-02-15 12:25:08

标签: c# wpf silverlight performance

我有一个控件(对于WPF和Silverlight),将数据表示为条形。 (小图表)。我想编写一个测量此控件性能的应用程序。我尝试在循环中添加点并等待渲染点。

在WPF工作中:

//start measuring time
for (int i =10, i<100, i++){
  chart.AddRandomPoint(i); //i - argument
  System.Windows.Forms.Application.DoEvents();
}
//finish measuring time

但是在Silverlight中,使用System.Windows.Forms.Application.DoEvents()是不可能的。

第二种方法是使用DispatcherTimer:

dicpatcherTimer_Tick(object sender, EventArgs e){
   chart.AddRandomPoint(i);
}

并订阅CompositionTarget.Rendering事件。在事件处理程序icrement计数器中。 这个计数器的巨大价值表现出良好的表现。

我的问题是: 可以添加点,等待图表渲染,立即添加另一个点等。

第二种方式(使用DispatcherTimer对象和CompositionTarget.Rendering事件)是否正确。它可以显示性能吗? (我需要比较重构前后的性能)。

1 个答案:

答案 0 :(得分:0)

考虑到你要求WPF ,我建议你看看

WPF Performance Toolkit,尤其认为Perforator会对此有所帮助。

关于WPF / Silverlight性能的好文章是A Critical Deep Dive into the WPF Rendering System