zoukankan      html  css  js  c++  java
  • .NET性能调优之一:ANTSPerformanceProfiler的使用

    .NET性能调优之一:ANTSPerformanceProfiler的使用

    更新时间:2019-07-10 07:46:09  

    .net性能调优系列文章

    系列文章索引

    • .net性能调优之一:ants performance profiler的使用
    • .net性能调优之二:使用visual studio进行代码度量
    • .net性能调优之三:yslow相关规则的调优工具和方法

    在使用.net进行快速地上手与开发出应用程序后,接下来面临的问题可能就是程序性能调优方面的问题,而性能调优有时候会涉及方方面面的问题,如程序宿主系统、数据库、网络环境等等,而当程序异常庞大复杂的时候,性能调优将变得更加无从下手。

    本系列文章主要会介绍一些.net性能调优的工具、web性能优化的规则(如yslow)及方法等等内容。成文前最不希望看到的就是园子里不间断的“哪个语言好,哪个语言性能高”的争论,不多说,真正的明白人都应该知道这样的争论有没有意义,希望我们能从实际性能优化的角度去讨论问题。

    ants performance profiler的基本使用

    ants performance profiler是redgate旗下强大的性能调优产品,官方产品页面在这里。

    先来看一下软件的基本使用。

    使用下面这段代码进行简单的测试。

    这是一个控制台应用程序,程序很简单,先进行10000次循环,输出和,再使用linq在list里找出1000的值输出。

     1 static void main()
     2 {
     3     var list = new list<int>();
     4 
     5     var sum = 0;
     6     for (var i = 0; i < 10000; i++)
     7     {
     8         sum += i;
     9         list.add(i);
    10     }
    11     console.writeline(sum);
    12 
    13     //find the value use linq: 1000
    14     var result = list.where(p => p.equals(1000));
    15     foreach (var i in result)
    16     {
    17         console.writeline(i);
    18     }
    19     console.readkey();
    20 }

    编译程序后,启动ants performance profiler,会自动弹出向导页面,在此页面中,可以看到软件支持多种.net程序的性能监控,如exe、web、windows service等等。

    而在performace counters中可以根据需要选择多种计数器,io、内存分配、处理器等等。

    针对测试demo,选择编译后的exe文件路径,因为刚才是debug编译,所以选择程序文件夹下\bin\debug\里面的exe即可。

    在profiling mode里可以选择监控的级别,

     

    此文来自: 马开东博客 转载请注明出处 网址:

    基本就是监控信息的多少与速度的权衡,默认选择“最详细”即可。其他的 详细 设置可以参考帮助 文档。

    点击“start profiling”,启动程序。

    分析结果的查看与分析

    软件的基本工作原理是在.net编译出的il代码里放入钩子用来记录时间,然后通过直观的界面显示出哪部分代码耗能最大。所以这是性能调优最直接的方法,针对最耗时的代码段进行优化即可。

    点击“start profiling”后启动之前编译的程序,软件开始执行,如果是其他交互程序如winform、web等,操作完需要进行性能调优的功能后,在

     

    此文来自: 马开东博客 转载请注明出处 网址:

    顶部的运行时间轴里用鼠标选定需要查看的时间段即可,一般有性能问题的时间段会出现一个波峰,选定那个时间段即可。

    选定后可以立即在下面的结果窗口中看到最耗时的方法,比如上面的demo,当然性能都消耗在了main函数上。

    软件提供了多种度量值查看性能损耗,有百分比和多种时间格式,这里选定“秒”作为度量单位。

    再选择要查看的函数,软件强大之处就显现出来了。

    • 右侧的红色标线,点击可以快速定位到最耗能的代码,颜色越深表示那段代码越耗能。
    • 左侧可以看到行号,此段代码执行的次数(hit count),平均执行时间,总的执行时间,当然还可以同时看到代码供分析使用。

    至于demo里这段代码为什么第一次执行console.writeline如此耗能,我想如果你认真看了《clr via c#》的第一章就应该能知道答案了。

    当然你还可以点击层次结构图标,查看更加直观的性能损耗,就像下面这样。

    这样的层次结构图还有一个好处就是可以看到.net framework的内部实现。

    当进行一些决策,比如是用原生的功能还是第三方组件时,这个功能会变得非常好用,因为通过它能比较直观的地看到内部实现的性能瓶颈在哪里。

  • 相关阅读:
    二、线程的生命周期
    一、多线程基础
    Java中的三种代理模式(转载)
    SpringBoot+Thymeleaf实现国际化
    Centos7设置Jar包开机自启动
    Centos7安装及卸载RabbitMQ
    Nacos无法读取配置中心数据
    解决SSH连接Linux系统特别慢的问题
    KMP字符串匹配算法
    格雷厄姆扫描法解凸壳问题
  • 原文地址:https://www.cnblogs.com/grj001/p/12224811.html
Copyright © 2011-2022 走看看