手机版

关于VS2012中性能分析工具的使用示例(图文介绍)

时间:2021-11-21 来源:互联网 编辑:宝哥软件园 浏览:

通过这段短代码的控制台程序,对性能进行了分析和改进,得到了后续改进前后的性能对比结果。先看控制台代码(源代码下载):复制的代码如下: static void main(string[]args){ int I=10000;while(I-0){ Core c=new Core();进程(日期时间。now . ToString());} }公共类Core { public void Process(字符串输入){//流程逻辑字符串结果=字符串。格式(' {0}-{1} ',日期时间。现在,输入);//记录到文件日志(结果);}公共无效日志(字符串消息){字符串文件名=系统。输入输出路径组合。CurrentDomain.BaseDirectory,' log . txt ');字符串消息=“{ Now } : { Message }”;消息=消息。替换(“{Now}”),日期时间。now . ToString(' yyyy-MM-DD hh :MM 3360s ');消息=消息。替换(“{Message}”,消息);使用(串流编译器软件=系统。附件文本(文件名)){软件。write line(msg);西南航空。flush();西南航空。close();} } }

点击“完成”按钮,分析将自动进行,控制台程序将直接运行。分析报告将在vs2012中自动显示,如下所示:

从上面的“总结”报告中,我们知道系统。函数和系统。appdomain.get _ basedirectory函数占用的时间最多。我们需要首先优化这两个功能的使用(我们将在后面讨论)。列出了五种最耗时的函数报表视图:生成的报表视图有很多种。上面显示的默认视图是“摘要”视图,其他类型的视图如下所示:(。

那么我们如何跟踪这些耗时的函数呢?我们需要转到“功能详细信息”视图,如下所示:

右边的红框代表耗时的分配比例。显然,Process函数在上图中占据了很大的比例,下方的红框代表了对应的代码,也用红色突出了性能损失突出的代码行和对应的损失比例(图中的99.2%是因为该代码中有三个损失点:83.3%、14.4%、1.5%)。我们需要追踪并进入最严重的流程功能进行查看。我们单击右边红色框中的进程栏。

似乎主要问题来自‘Log(result)’代码行,占73.5%。继续深入跟踪,如下图所示:

那几乎是一样的。在这里,损失较多的两行是:获取fileName和AppendText到日志文件代码行,并分别进行优化:获取fileName优化。日志文件名不变,不需要每次Log(msg)都计算,一旦涉及到I/O操作(从单行代码的角度来看),file name变量直接提取为静态的AppendText优化比较慢,不可避免。我该怎么办?然后改变结构:主程序写入队列中的日志,另一个线程负责写入磁盘修改代码如下:复制代码如下: public class core { public void process(字符串输入){//process logic string result=string . format(' { 0 }-{ 1 } ',datetime。现在,输入);//记录到文件日志(结果);}私有静态Liststring日志=new Liststring();公共静态void日志(字符串消息)//filename已被删除,因为此时不再需要此变量,因为其他线程负责写入磁盘{ string msg=' { now } : { message } ';消息=消息。替换(“{Now}”),日期时间。now . ToString(' yyyy-MM-DD hh :MM 3360s ');消息=消息。替换(“{Message}”,消息);日志。添加(味精);}}我们再次运行性能分析如下:

我们对比一下第一次和这次的图:

改进后的性能明显优于改进前。自定义性能分析我们可以通过修改属性来添加/删除性能指标,例如,添加某个/某些Windows计数器,收集Windows事件,收集的生命周期。NET对象等。我们可以设置如下:

将生成以下更详细的报告:

该报告将列出生成最多的对象(本例中为字符串),哪些函数导致了最多的内存分配,等等。在“标记”视图中,可以看到每500毫秒收集的windows计数器数据,如下所示是磁盘队列计数器的集合:

在“对象生存期”视图中,可以看到各种对象从新到处置的所有数据,如下图所示:

很棒吧?我们来谈谈如何通过VS2012分析独立运行的程序的性能。其实很简单。我们可以从下图中得到。大家都知道:

让我们来谈谈如何分析web项目的性能.首先打开web项目解决方案,然后直接进行性能分析。有人会说没有手术要求。这很简单,有很多解决方案:打开另一个VS环境(无论是远程还是本地),疯狂地通过web负载测试请求,模拟通过loadrunner/qtp手动请求sad提醒。

版权声明:关于VS2012中性能分析工具的使用示例(图文介绍)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。