C#代碼機能測試類(簡略適用)。本站提示廣大學習愛好者:(C#代碼機能測試類(簡略適用))文章只能為提供參考,不一定能成為您想要的結果。以下是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; } } } }