C#代碼性能測試類(簡單實用)
更新時間:2015年06月08日 09:52:39 投稿:junjie
這篇文章主要介紹了C#代碼性能測試類(簡單實用),本文直接給出實現代碼和使用示例,需要的朋友可以參考下
介紹:
可以很方便的在代碼里循環(huán)執(zhí)行 需要測試的函數 自動統(tǒng)計出執(zhí)行時間,支持多線程。
使用方法:
PerformanceTest p = new PerformanceTest();
p.SetCount(10);//循環(huán)次數(默認:1)
p.SetIsMultithread(true);//是否啟動多線程測試 (默認: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>
///設置執(zhí)行次數(默認: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>
/// 執(zhí)行函數
/// </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# 代碼進行基準測試
- C#建立測試用例系統(tǒng)的示例代碼
- 關于Unity C# Mathf.Abs()取絕對值性能測試詳解
- C#使用base64對字符串進行編碼和解碼的測試
- C#使用String和StringBuilder運行速度測試及各自常用方法簡介
- 詳解C# WebApi 接口測試工具:WebApiTestClient
- c# 插入數據效率測試(mongodb)
- 京東聯盟C#接口測試示例分享
- C#/.Net 中快速批量給SQLite數據庫插入測試數據
- C#控制臺下測試多線程的方法
- c#測試反射性能示例
- c#測試本機sql運算速度的代碼示例分享
- C# 單元測試全解析

