效能測試類,讓你寫法代碼養成經常測試的好習慣 -ASP.NET C#

來源:互聯網
上載者:User

標籤:

介紹:

可以很方便的在代碼裡迴圈執行 需要測試的函數  自動統計出執行時間,支援多線程。

 

使用方法:

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

  

 

效能測試類,讓你寫法代碼養成經常測試的好習慣 -ASP.NET C#

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.