vs2012性能检测.docx_第1页
vs2012性能检测.docx_第2页
vs2012性能检测.docx_第3页
vs2012性能检测.docx_第4页
vs2012性能检测.docx_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

先看console代码(源代码下载):复制代码 代码如下:static void Main(string args) int i = 10000; while(i-0) Core c=new Core(); c.Process(DateTime.Now.ToString(); public class Core public void Process(string input) /process logic string result = string.Format(0-1, DateTime.Now, input); /log to file Log(result); public void Log(string message) string fileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, log.txt); string msg = Now: Message; msg = msg.Replace(Now, DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss); msg = msg.Replace(Message, message); using (StreamWriter sw = System.IO.File.AppendText(fileName) sw.WriteLine(msg); sw.Flush(); sw.Close(); 点击“完成”按钮,此时会自动进行分析,直接跑完控制台程序,vs2012会自动显示出分析报告,如下:从上面的“摘要”报告中得知System.IO.File.AppendText函数和System.AppDomain.get_BaseDirectory函数耗时最多,我们需要先优化这2个函数的使用(稍后再讲)共列出了最耗时的5个函数报告视图种类:生成的报告视图有很多种,上面所示默认的是“摘要”视图,其他类型的视图如下所列:那么我们如何跟踪这几个耗时的函数呢?我们需要转入“函数详细信息”视图,如下:右边红框代表耗时分布比例,显然上图中Process函数占用了很大比例下边的红框代表相应的代码,并且还会红色高亮性能损耗突出的代码行、以及相应损耗比例(图中的99.2%是由于这行代码共有3个损耗点:83.3%+14.4%+1.5%)我们需要往下跟踪,进入最严重的process函数进行查看,我们click右边红框中的Process条,进入细化的分析界面,如下:看来主要问题来自Log(result)代码行,占了73.5%,继续深入跟踪,如下图:这下差不多了,这里比较损耗多的2行是:获得fileName和AppendText到日志文件代码行,分别优化:获得文件名优化日志文件名是不变的,因此不用每次Log(msg)都要计算,直接extract为static的fileName变量 AppendText优化一旦牵涉到I/O操作,速度就慢,无法避免(从单行代码的角度来看),那怎么办?那就把结构改掉吧:主程序写入log到队列中, 由另外一个thread负责写入到磁盘中修改代码如下:复制代码 代码如下:public class Core public void Process(string input) /process logic string result = string.Format(0-1, DateTime.Now, input); /log to file Log(result); private static List log = new List(); public static void Log(string message)/fileName去掉了,因为此时已经不需要这个变量了,因为是由其他线程负责写入磁盘 string msg = Now: Message; msg = msg.Replace(Now, DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss); msg = msg.Replace(Message, message); log.Add(msg); 我们再次运行性能分析,如下:我们比较下第一次和这一次的曲线图:改进后的性能明显好于改进之前的性能。自定义性能分析我们可以通过修改属性来add/remove性能指标,比如要加入某个/某些Windows计数器、收集Windows事件、收集.NET对象生命周期等,我们可以进行如下操作来进行设置:将会生成如下更详细的报告:报告中会列出生成的最多的是哪种对象(本例中是string)、由哪些函数导致的分配了最多的内存、等等在“标记”视图中,能看到每隔500毫秒收集的windows计数器数据,如下图就是磁盘队列计数器的收集:在“对象生存期”视图中,能看到各种对象从new到dispose的所有数据,如下图:很牛b吧。下面说说如何通过VS2012来对独立运行的程序进行性能分析,其实很简单,就下面这个图就搞定了,大家都懂的:再说说如何对web项目性能分析吧.先打

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论