用于统计函数执行时间的类

    用于统计函数执行时间的类是最近在改进程序性能时写的,在函数入口处调用Start,在结束的时候调用Stop,在程序推出前调用Total进行统计输出。
该类不支持.net 1.1
using  System;
using  System.Data;
using  System.Collections.Generic;
using  System.Diagnostics;
using  System.Text;

namespace  Common
{
    
/**/ ///   <summary>
    
///  函数执行时间统计
    
///   </summary>
    
///   <example>
    
///  public void function1()
    
///  {
    
///     QueryTime.Start("function1");
    
///     //  处理代码
    
///     QueryTime.Stop("function1");
    
///  }
    
///  
    
///  public void function2()
    
///  {
    
///     QueryTime.Start("function2");
    
///     //  处理代码
    
///     QueryTime.Stop("function2");
    
///  }
    
///  
    
///  public void main()
    
///  {
    
///     function1();
    
///     function2();
    
///     function1();
    
///     Console.WriteLine(QueryTime.Total());
    
///  }
    
///  
    
///  result:
    
///  function1 Call 2 count, useTime 00:00:01.1234567
    
///  function2 Call 1 count, useTime 00:00:00.1234567
    
///   </example>
     public   class  QueryTime
    {      
        
internal  List < TimeSpan >  timeSpan  =   new  List < TimeSpan > ();
        
internal  Stopwatch watch  =   new  Stopwatch();

        
public   void  Start( string  key)
        {
            QueryTime qt;
            
if  ( ! map.TryGetValue(key,  out  qt))
            {
                qt 
=   new  QueryTime();
                map.Add(key, qt);
            }

            qt.watch.Reset();
            qt.watch.Start();
        }

        
public   void  Stop( string  key)
        {
            QueryTime qt 
=  map[key];
            qt.watch.Stop();
            qt.timeSpan.Add(qt.watch.Elapsed);
        }

        
public   void  Reset( string  key)
        {
            QueryTime qt 
=  map[key];
            qt.watch.Stop();
            qt.watch.Reset();
        }

        Dictionary
< string , QueryTime >  map  =   new  Dictionary < string , QueryTime > ();

        
public   string  Total()
        {
            StringBuilder builder 
=   new  StringBuilder();
            
foreach  ( string  key  in  map.Keys)
            {
                QueryTime qt 
=  map[key];
                TimeSpan total 
=   new  TimeSpan();
                
foreach  (TimeSpan ts  in  qt.timeSpan)
                {
                    total 
=  total.Add(ts);
                }
                builder.AppendFormat(
" {0} Call {1} count, useTime {2}   " , key, qt.timeSpan.Count, total);
            }

            
return  builder.ToString();
        }

    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值