C#代碼性能測試類(簡單實用)
更新時間:2015年06月08日 09:52:39 投稿:junjie
這篇文章主要介紹了C#代碼性能測試類(簡單實用),本文直接給出實現(xiàn)代碼和使用示例,需要的朋友可以參考下
介紹:
可以很方便的在代碼里循環(huán)執(zhí)行 需要測試的函數(shù) 自動統(tǒng)計出執(zhí)行時間,支持多線程。
使用方法:
PerformanceTest p = new PerformanceTest(); p.SetCount(10);//循環(huán)次數(shù)(默認(rèn):1) p.SetIsMultithread(true);//是否啟動多線程測試 (默認(rèn):false) p.Execute( i => { //需要測試的代碼 Response.Write(i+"<br>"); System.Threading.Thread.Sleep(1000); }, message => { //輸出總共運行時間 Response.Write(message); //總共執(zhí)行時間:1.02206秒 } );
源碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace SyntacticSugar { /// <summary> /// ** 描述:程序性能測試類 /// ** 創(chuàng)始時間:2015-5-30 /// ** 修改時間:- /// ** 修改人:sunkaixuan /// ** 使用說明:tml /// </summary> public class PerformanceTest { private DateTime BeginTime; private DateTime EndTime; private ParamsModel Params; /// <summary> ///設(shè)置執(zhí)行次數(shù)(默認(rèn):1) /// </summary> public void SetCount(int count) { Params.RunCount = count; } /// <summary> /// 設(shè)置線程模式(默認(rèn):false) /// </summary> /// <param name="isMul">true為多線程</param> public void SetIsMultithread(bool isMul) { Params.IsMultithread = isMul; } /// <summary> /// 構(gòu)造函數(shù) /// </summary> public PerformanceTest() { Params = new ParamsModel() { RunCount = 1 }; } /// <summary> /// 執(zhí)行函數(shù) /// </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("總共執(zhí)行時間:{0}秒", totalTime); Console.Write(reval); return reval; } private class ParamsModel { public int RunCount { get; set; } public bool IsMultithread { get; set; } } } }
您可能感興趣的文章:
- 使用 BenchmarkDotNet 對 C# 代碼進(jìn)行基準(zhǔn)測試
- C#建立測試用例系統(tǒng)的示例代碼
- 關(guān)于Unity C# Mathf.Abs()取絕對值性能測試詳解
- C#使用base64對字符串進(jìn)行編碼和解碼的測試
- C#使用String和StringBuilder運行速度測試及各自常用方法簡介
- 詳解C# WebApi 接口測試工具:WebApiTestClient
- c# 插入數(shù)據(jù)效率測試(mongodb)
- 京東聯(lián)盟C#接口測試示例分享
- C#/.Net 中快速批量給SQLite數(shù)據(jù)庫插入測試數(shù)據(jù)
- C#控制臺下測試多線程的方法
- c#測試反射性能示例
- c#測試本機(jī)sql運算速度的代碼示例分享
- C# 單元測試全解析