• 性能测试类,让你写法代码养成经常测试的好习惯 -ASP.NET C#


    介绍:

    可以很方便的在代码里循环执行 需要测试的函数  自动统计出执行时间,支持多线程。

    使用方法:

                PerformanceTest p = new PerformanceTest();
                p.SetCount(10);//循环次数(默认:1)
                p.SetIsMultithread(true);//是否启动多线程测试 (默认:false)
                p.Execute(
                i =>
                {
                    //需要测试的代码
                    Response.Write(i+"<br>");
                    System.Threading.Thread.Sleep(1000);
    
    
                },
                message =>
                {
    
                    //输出总共运行时间
                    Response.Write(message);   //总共执行时间:1.02206秒
                 
                }
                );
    

      

    源码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace SyntacticSugar
    {
        /// <summary>
        /// ** 描述:程序性能测试类
        /// ** 创始时间:2015-5-30
        /// ** 修改时间:-
        /// ** 修改人:sunkaixuan
        /// ** 使用说明:tml
        /// </summary>
        public class PerformanceTest
        {
            private DateTime BeginTime;
            private DateTime EndTime;
            private ParamsModel Params;
    
            /// <summary>
            ///设置执行次数(默认:1)
            /// </summary>
            public void SetCount(int count)
            {
                Params.RunCount = count;
            }
            /// <summary>
            /// 设置线程模式(默认:false)
            /// </summary>
            /// <param name="isMul">true为多线程</param>
            public void SetIsMultithread(bool isMul)
            {
                Params.IsMultithread = isMul;
            }
    
            /// <summary>
            /// 构造函数
            /// </summary>
            public PerformanceTest()
            {
                Params = new ParamsModel()
                {
                    RunCount = 1
                };
            }
    
            /// <summary>
            /// 执行函数
            /// </summary>
            /// <param name="action"></param>
            public void Execute(Action<int> action, Action<string> rollBack)
            {
                List<Thread> arr = new List<Thread>();
                BeginTime = DateTime.Now;
                for (int i = 0; i < Params.RunCount; i++)
                {
                    if (Params.IsMultithread)
                    {
                        var thread = new Thread(new System.Threading.ThreadStart(() =>
                        {
                            action(i);
                        }));
                        thread.Start();
                        arr.Add(thread);
                    }
                    else
                    {
                        action(i);
                    }
                }
                if (Params.IsMultithread)
                {
                    foreach (Thread t in arr)
                    {
                        while (t.IsAlive)
                        {
                            Thread.Sleep(10);
                        }
                    }
    
                }
                rollBack(GetResult());
            }
    
            public string GetResult()
            {
                EndTime = DateTime.Now;
                string totalTime = ((EndTime - BeginTime).TotalMilliseconds / 1000.0).ToString("n5");
                string reval = string.Format("总共执行时间:{0}秒", totalTime);
                Console.Write(reval);
                return reval;
            }
    
            private class ParamsModel
            {
                public int RunCount { get; set; }
                public bool IsMultithread { get; set; }
            }
        }
    }
    

      

  • 相关阅读:
    Flink的入门
    Hadoop/Spark相关面试问题总结
    什么事分布式系统
    分布式的本质
    spark的shuffle机制
    Yarn的资源隔离机制
    hadoop和spark相关参数的配置
    分布式常问问题
    转一篇分布式消息队列的文章
    jquery 重要知识点总结
  • 原文地址:https://www.cnblogs.com/sunkaixuan/p/4540840.html
Copyright © 2020-2023  润新知