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;}
}
}
}