zoukankan      html  css  js  c++  java
  • 打造自己的性能测试类

       之前做性能测试老是零零散散的一个 Stopwatch,又一个Stopwatch ,去测试 方法的执行效率,从而进行验证。

              为了方便使用,自己写一个好用的 性能测试类,目的在于方便好用,点到即可。

       使用方式(如下,测试 NameValueCollection 与 Dictionary 的 性能):

    static void Main(string[] args)
            {
                Console.WriteLine(new Action(() => {
    
                    NameValueCollection nvc = new NameValueCollection();
                    for (int j = 0; j < 10; j++)
                    {
                        nvc.Add(j.ToString(), j.ToString());
                    }
    
                    for (int j = 0; j < 10; j++)
                    {
                        string temp = nvc[j.ToString()].ToString();
                    }
    
                }).ForWatchMS(100000));
    
    
                Console.WriteLine(new Action(() => {
                    Dictionary<string, string> nvc = new Dictionary<string, string>();
                    for (int j = 0; j < 10; j++)
                    {
                        nvc.Add(j.ToString(), j.ToString());
                    }
    
                    for (int j = 0; j < 10; j++)
                    {
                        string temp = nvc[j.ToString()].ToString();
                    }
                }).ForWatchMS(100000));
                
            }

             代码如下:

      

    using System;
    using System.Diagnostics;
    
    public static class SpendTimeHelper
    {
        #region Action
            
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="act"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS(this Action act, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                act.Invoke();
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="act"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T>(this Action<T> act, T t, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                act.Invoke(t);
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="act"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T1, T2>(this Action<T1, T2> act, T1 t1, T2 t2, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int i = 0; i < forCount; i++)
            {
                act.Invoke(t1, t2);
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="act"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T1, T2, T3>(this Action<T1, T2, T3> act, T1 t1, T2 t2, T3 t3, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                act.Invoke(t1, t2, t3);
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="act"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T1, T2, T3, T4>(this Action<T1, T2, T3, T4> act, T1 t1, T2 t2, T3 t3, T4 t4, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                act.Invoke(t1, t2, t3, t4);
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="act"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T1, T2, T3, T4, T5>(this Action<T1, T2, T3, T4, T5> act, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                act.Invoke(t1, t2, t3, t4, t5);
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
    
        #endregion
    
        #region Func
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="fun"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T>(this Func<T> fun, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                fun.Invoke();
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="fun"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T1, TResult>(this Func<T1, TResult> fun, T1 t1, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                fun.Invoke(t1);
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="fun"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T1, T2, TResult>(this Func<T1, T2, TResult> fun, T1 t1, T2 t2, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                fun.Invoke(t1, t2);
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="fun"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T1, T2, T3, TResult>(this Func<T1, T2, T3, TResult> fun, T1 t1, T2 t2, T3 t3, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                fun.Invoke(t1, t2, t3);
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="fun"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T1, T2, T3, T4, TResult>(this Func<T1, T2, T3, T4, TResult> fun, T1 t1, T2 t2, T3 t3, T4 t4, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                fun.Invoke(t1, t2, t3, t4);
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
        /// <summary>
        /// 执行forCount次的花费时间(ms) 
        /// </summary>
        /// <param name="fun"></param>
        /// <param name="forCount">执行次数</param>
        /// <returns>花费时间:毫秒</returns>
        public static long ForWatchMS<T1, T2, T3, T4, T5, TResult>(this Func<T1, T2, T3, T4, T5, TResult> fun, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, long forCount)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int j = 0; j < forCount; j++)
            {
                fun.Invoke(t1, t2, t3, t4, t5);
            }
            watch.Stop();
            return watch.ElapsedMilliseconds;
        }
    
    
    
        #endregion
    }
  • 相关阅读:
    如何避免自己上传的视频或者音频资源被下载
    定期备份服务器上的项目到本地服务器
    查看项目中的laravel的版本
    PHP高并发和大流量的解决方案
    wordpress的安装及使用
    openstack及组件简要介绍
    Java中 如何把Object类型强转成Map<String, String>类型
    JSch基本使用
    Ganymed SSH-2 for Java
    全面解析NIO
  • 原文地址:https://www.cnblogs.com/lztkdr/p/SpendTimeHelper.html
Copyright © 2011-2022 走看看