如何使用大量自定义控件来分析silverlight mvvm应用程序

时间:2010-05-22 20:15:15

标签: silverlight performance silverlight-3.0 profiling

有一个非常大的LOB silverlight应用程序,我们编写了很多自定义控件,这些控件在绘图时比较重。

所有数据都由RIA服务加载,处理并绑定(使用INofityPropertyChanged接口)到视图。

问题是第一次绘图需要花费很多时间。在调用服务(服务器)和重绘之后非常快。

我使用Equatec profiler来跟踪问题。我看到处理只需几毫秒,所以我的想法是SL引擎的绘图很慢。

我想知道是否有可能在SL内部以某种方式剖析以检查哪些绘图操作花费了太多时间。是否有任何指导如何更快地绘制复杂的自定义控件?

2 个答案:

答案 0 :(得分:7)

简短回答 - 不,没有超级简便的方法可以找出你的应用程序运行缓慢的原因。

长答案:
我从来没有使用Equatec profiler for Silverlight,但它似乎与dotTrace类似。无论哪种方式,它们最终都会显示与xPerf相同的信息 基本上,您面前的信息是说哪些方法和类占用了最多的时间。

如果该信息指向Silverlight框架图形引擎(agcore.dll和npctrl.dll),您将不得不开始一个缓慢的过程来弄清楚您做错了什么。
在这一点上,我强烈建议您观看Seema Ramchandani关于Silverlight性能的每一次演讲。具体为PDC08Mix09Mix10

性能优化步骤#1 :测量。测量。测量。
有一个明确的基线,你想要改进什么,并设置一个数字期望,当性能足够好时 这样,您就可以验证您的更改是否对性能产生了积极影响。

性能优化的第2步:开始删除内容 在你的情况下,我开始评论表格外的控件。当性能大幅提升时,你就找到了罪魁祸首。

性能优化的第3步:尝试修复弱链接。

我就是这样解决这个问题的。

此致
- 贾斯汀·安吉尔

答案 1 :(得分:2)

尝试使用Visual Studio分析器进行分析,以便更好地衡量托管代码和Silverlight中执行的本机代码。探查器将帮助您指出您花费大部分时间(热门路径是什么)以及您是否将其花费在框架(SL)代码或您自己的代码中。

分析的基础是:

  1. 打开Visual Studio命令提示符(作为管理员),'cd'到DLL和PDB文件所在的目录(通常是“Debug”文件夹)
  2. VSPerfClrEnv / sampleon
  3. VSPerfCmd -start:sample -output:somefile.vsp VSPerfCmd -globalon VSPerfCmd -launch:“c:\ Program Files(x86)\ Internet Explorer \ iexplore.exe”-args:“”
  4. VSPerfCmd -shutdown
  5. VSPerfClrEnv / off
  6. 您可以在我的博客上找到有关使用探查器的详细说明:http://www.nachmore.com/2010/profiling-silverlight-4-with-visual-studio-2010/

    如果您发现自己花时间在Silverlight中,请跟踪代码路径以查看代码触发昂贵调用的位置,以便您可以根据速度减慢的原因调查特定解决方案。

    希望有所帮助,

    • 奥伦