C#代码性能测试类(简单实用)
介绍:
可以很方便的在代码里循环执行需要测试的函数 自动统计出执行时间,支持多线程。
使用方法:
PerformanceTestp=newPerformanceTest(); 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秒 } );
源码:
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading; namespaceSyntacticSugar { ///<summary> ///**描述:程序性能测试类 ///**创始时间:2015-5-30 ///**修改时间:- ///**修改人:sunkaixuan ///**使用说明:tml ///</summary> publicclassPerformanceTest { privateDateTimeBeginTime; privateDateTimeEndTime; privateParamsModelParams; ///<summary> ///设置执行次数(默认:1) ///</summary> publicvoidSetCount(intcount) { Params.RunCount=count; } ///<summary> ///设置线程模式(默认:false) ///</summary> ///<paramname="isMul">true为多线程</param> publicvoidSetIsMultithread(boolisMul) { Params.IsMultithread=isMul; } ///<summary> ///构造函数 ///</summary> publicPerformanceTest() { Params=newParamsModel() { RunCount=1 }; } ///<summary> ///执行函数 ///</summary> ///<paramname="action"></param> publicvoidExecute(Action<int>action,Action<string>rollBack) { List<Thread>arr=newList<Thread>(); BeginTime=DateTime.Now; for(inti=0;i<Params.RunCount;i++) { if(Params.IsMultithread) { varthread=newThread(newSystem.Threading.ThreadStart(()=> { action(i); })); thread.Start(); arr.Add(thread); } else { action(i); } } if(Params.IsMultithread) { foreach(Threadtinarr) { while(t.IsAlive) { Thread.Sleep(10); } } } rollBack(GetResult()); } publicstringGetResult() { EndTime=DateTime.Now; stringtotalTime=((EndTime-BeginTime).TotalMilliseconds/1000.0).ToString("n5"); stringreval=string.Format("总共执行时间:{0}秒",totalTime); Console.Write(reval); returnreval; } privateclassParamsModel { publicintRunCount{get;set;} publicboolIsMultithread{get;set;} } } }