我有一个控件(对于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事件)是否正确。它可以显示性能吗? (我需要比较重构前后的性能)。
答案 0 :(得分:0)
考虑到你要求WPF 太,我建议你看看
WPF Performance Toolkit,尤其认为Perforator会对此有所帮助。
关于WPF / Silverlight性能的好文章是A Critical Deep Dive into the WPF Rendering System