[转]使用dottrace2.0进行性能分析简介

         JetBrains dotTrace 2.0是一款优秀的代码分析(Profile)程序,可分析基于.NET framework1.1以及2.0的Windows程序、Windows服务、运行在IIS上的ASP.NET程序...
         这里主要介绍的是性能分析(Performance profiling)。
         JetBrains dotTrace可使用图形化的界面截取程序运行时的线程调用映像。由于程序运行的时候,我们很难把握它运行到哪儿了,所以JetBrains dotTrace也提供一个API来帮我们编写代码来截取该映像。
         首先,建立一个Console项目ConsoleApplication3,Program类代码如下:
 System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

using JetBrains.dotTrace.Api;

namespace ConsoleApplication3
{
    
class Program
    
{
        
static void Main( string[ ] args )
        
{
            CPUProfiler.Start( );

            OutputName( 
"Minco" );

            CPUProfiler.StopAndSaveSnapShot( );
        }


        
private static void OutputName( string name )
        
{
            
if(!string.IsNullOrEmpty( name))
            
{
                Console.WriteLine( 
"Hello: " + name);
                Thread.Sleep( 
100 );
            }

        }

    }

}

编译项目。打开dotTrace,选择“Profile Application...”,在弹出的对话框里填入演示项目生成的ConsoleApplication3.exe的路径(由于我用的是中文版,没有 在工具栏上“运行”旁边看见dotTrace的按钮,要不就不用这么麻烦了),按“Start Application”按钮,一会dotTrace就会出现如下图显示的截图:

上 图很清楚的看到GetName方法占用了99.21%的时间(不同时间不同机器有所出入),而其中Console.WriteLine()占用了 50.09%的时间,Thread.Sleep()占用了48.32%的时间。通过分析复杂点的程序,我们可以找出到底是哪些代码导致了性能问题。
         Winform的程序也采用一样的方法。Asp.net的程序跟这类似,选择的是URL。Windows Service的程序倒是没测试过,只不过是将Windows Service的程序的进程附加上去
        呵呵,就这样。得看看CLRProfiler怎么玩了。有问题一起讨论
原文地址:https://www.cnblogs.com/xjyggd/p/1305368.html