發布一個自己開發的效能分析小工具NPerformance(beta),大家來給點意見哈

來源:互聯網
上載者:User

上一篇文章看地圖,找工作!Mashup應用"圖聘網"beta上線啦!居然被評鑑成了廣告貼,鬱悶了一下,看來部落格園管理的還蠻嚴的。

言歸正傳,大四就要到了,趁出去實習前的空閑時間,花了點時間做了效能分析小工具:NPerformance。(這名字蠻意淫的,哈哈) 。當然目前只是一期的beta版,以後有時間再去完善。

 為了方便大家的使用,這個小工具的使用方式是類似與NUnit的。即需要建立一個程式集用於包含要效能分析的代碼,再通過GUI(GUI老實說有點醜,而且還有我那蹩腳的英文)來運行這些分析。

在講使用方式前,大家來看看分析的:

在這裡引入兩個概念

分析用例(AnalysisCase): 代表要進行效能分析的一個方法,方法被AnalysisCase屬性標記同時處於分析組中就會被解析成分析用例。

 分析組(AnalysisGroup):將分析用例組織成一組,因為一個問題可能有多套解決方案,我們需要分析各套解決方案的效能如何。類被AnalysisGroup屬性標記會被解析成分析組。

中我們分析的是組StringBuildAnalysis,這個組用來分析字串拼接的兩種方法在效能上的差異。

用例BulidByPlus使用的是+來完成字串拼接,而BulidByStringBulid使用StringBuilder來完成拼接。時間消耗上大家可以明顯的看出來 BulidByStringBulid的5ms明顯優於BulidByPlus的126ms。

大家來看看執行分析的代碼吧:

using System.Text;
using NPerformance.Framework;

namespace NPerformance.Demo
{
    [AnalysisGroup]
    public class StringBuildAnalysis
    {
        [AnalysisCase]
        public void BulidByPlus()
        {
            string result = "";

            for (int i = 0; i < 5000; i++)
            {
                result += i + " ";
            }
        }

        [AnalysisCase]
        public void BulidByStringBulid()
        {
            StringBuilder sb=new StringBuilder(1000*3);

            for (int i = 0; i < 5000; i++)
            {
                sb.Append(i + " ");
            }

            string result = sb.ToString();
        }
    }
}

 

 使用using NPerformance.Framework;來引入屬性的命名空間。

AnalysisGroup:標記一個用於組織分析用例的類,必須為public

AnalysisCase:標記一個包含分析操作的方法,必須為public

 

應該還蠻容易理解的吧。

 再看一下一些別的用法:

[AnalysisCase(10)]
        public void UseLinq()
        {
            GridView grid = new GridView();
            grid.DataSource =
                    from customer in dataContext.Customers
                    where customer.CustomerID < 50
                    select customer;

            PerformanceReport.Snapshot("Before DataBind");
            grid.DataBind();
            PerformanceReport.Snapshot("After DataBind");
        }

 其中AnalysisCase(10)中的10代表此用例會被重複分析10次。

PerformanceReport.Snapshot("Before DataBind");可以建立當前分析的快照, Before DataBind是快照的名字。

 我們來再看幾張圖:

2494ms/249.4ms表示共消耗 2494ms,每次消耗249.4ms

通過快照我們可以知道SqlToLinq在第一次綁定時消耗了絕大數的時間,約2500ms,而後的應該都是載入緩衝的結果。讓我們再看看使用DataReader如何。

 可以看出效能比SqlToLinq提高了不少。

 

那如果效能分析時出現了異常如何?

如上所示,呵呵。

 大概的情況大家都應該瞭解了,那如何在實際的項目使用呢?

Framework包:基於.Net 2.0,包含分析屬性,客戶代碼只需引用這個包即可。

Analysis包:基於.Net 3.5,包含分析的核心代碼。

 

所以您要是想使用的話只需在您的項目引入 Framework包,並編寫相應的分析代碼,最後通過GUI載入該程式集即可。但GUI需要.Net 3.5的支援

不過當前不支援載入宿主AppDomain,所以您在待剖析器集中的config設定檔會載入不了, 所以config配置可能要轉為代碼配置,在此還請各位多多包涵,以後一定完善。

 原始碼在此奉上:

 /Files/wangqiaosm/NPerformanceRelease.rar

希望大家給小弟多提意見,我來這就是來挨磚的

小弟暑假想在上海或深圳找份實習工作,不知哪位前輩可以給個機會。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.