C#代码性能测试类(简单实用)
C#代码性能测试类(简单实用)
发布时间:2016-12-28 来源:查字典编辑
摘要:介绍:可以很方便的在代码里循环执行需要测试的函数自动统计出执行时间,支持多线程。使用方法:PerformanceTestp=newPerfo...

介绍:

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

使用方法:

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类