程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#代碼機能測試類(簡略適用)

C#代碼機能測試類(簡略適用)

編輯:C#入門知識

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved