·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> 性能测试类,让你写法代码养成经常测试的好习惯 -ASP.NET C#

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

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

性能测试类,让你写法代码养成经常测试的好习惯 -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; }        }    }}