C#代码性能测试类(简单实用)
2015-06-08 09:52
901 查看
介绍:
可以很方便的在代码里循环执行 需要测试的函数 自动统计出执行时间,支持多线程。
使用方法:
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; } } } }
您可能感兴趣的文章:
相关文章推荐
- Java IO与NIO的一些文件拷贝测试
- c#调用COM组件
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#中Equality和Identity浅析
- C#生成饼形图及添加文字说明实例代码
- C#判等对象是否相等的方法汇总
- C#简单的向量用法实例教程
- C#托管堆对象实例包含内容分析
- C#实现按照指定长度在数字前补0方法小结
- C#虚方法的声明和使用实例教程
- C#获取文件夹及文件的大小与占用空间的方法
- C#定义简单的反射工厂实例分析
- C#数字图象处理之肤色检测的方法
- C#实现用于操作wav声音文件的类实例
- C#选择排序法实例分析