• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 关于VS2012自带的 性能分析 工具使用实例(图文介绍)

关于VS2012自带的 性能分析 工具使用实例(图文介绍)

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了vs2012串口通信实例,vs2012自带数据库,vs2012,vs2012产品密钥,vs2012中文旗舰版下载等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本篇通过一小段代码的console程序来进行性能的分析以及改进、直到后面的改进前、改进后性能比较结果。

先看console代码(源代码下载):

            //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();
            }
        }
    }
</div>

</div>

 点击“完成”按钮,此时会自动进行分析,直接跑完控制台程序,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负责写入到磁盘中

  修改代码如下:  

            //log to file
            Log(result);
        }


        private static List<string> log = new List<string>();
        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);
        }

    }   
</div>

</div>

我们比较下第一次和这一次的曲线图:

改进后的性能明显好于改进之前的性能。

自定义性能分析

我们可以通过修改属性来add/remove性能指标,比如要加入某个/某些Windows计数器、收集Windows事件、收集.NET对象生命周期等,我们可以进行如下操作来进行设置:

将会生成如下更详细的报告:

报告中会列出生成的最多的是哪种对象(本例中是string)、由哪些函数导致的分配了最多的内存、等等

在“标记”视图中,能看到每隔500毫秒收集的windows计数器数据,如下图就是磁盘队列计数器的收集:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • vs2012创建的ado.net模型无法实例化的解决方案
  • 关于VS2012自带的 性能分析 工具使用实例(图文介绍)

相关文章

  • 2017-05-11ASP.NET4 GridView的四种排序样式详解
  • 2017-05-11asp.net 数据库的连接和datatable类
  • 2017-05-11谈谈如何在ASP.NET Core中实现CORS跨域
  • 2017-05-11aspx 服务器架设问题解决
  • 2017-05-11ASP .NET调用javascript中Response.Write和ClientScript.RegisterStartupScript的区别
  • 2017-05-11System.Runtime.InteropServices.COMException的解决方法
  • 2017-05-11asp.net 获取银行货币汇率的代码
  • 2017-05-11关于服务器或虚拟主机不支持 AjaxPro 的问题终极解决方法
  • 2017-05-11VS2005打开VS2008项目的2种方法(vs2005怎么打开2008)
  • 2017-05-11asp.net连接数据库 增加,修改,删除,查询代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Linq to XML 用一句话读出RSS文章列表代码
    • ASP.NET中ImageButton图片按钮控件的使用
    • 浅谈ASP.NET常用数据绑定控件优劣总结
    • asp.net Web Service 接口大量数据传输解决方案
    • asp.net 获取指定文件夹下所有子目录及文件(树形)
    • 微软官方SqlHelper类 数据库辅助操作类 原创
    • .NET Core系列之MemoryCache 缓存过期
    • IE下document.referrer 拒绝访问的解决方法
    • asp.net WebForm页面间传值方法
    • ASP.NET向Javascript传递变量两种实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有