zoukankan      html  css  js  c++  java
  • 用于统计函数执行时间的类

        用于统计函数执行时间的类是最近在改进程序性能时写的,在函数入口处调用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}\r\n ", key, qt.timeSpan.Count, total);
                }


                
    return builder.ToString();
            }


        }

    }

  • 相关阅读:
    js 中 && 和 ||
    The server time zone value 'EDT' is unrecognized or represents more than one time zone.
    docker进入容器
    docker 挂载本地目录
    Docker for Windows 挂载目录失败
    docker下redis启动 根据本地配置文件
    docker 安装 nacos/nacos-server 镜像并配置本地数据库
    spring cloud Nacos Config配置中心
    Docker卸载
    虚拟机centos添加硬盘和分区挂载
  • 原文地址:https://www.cnblogs.com/yahle/p/846115.html
Copyright © 2011-2022 走看看