Performance Profiler

Performance Profiler

效能診斷工具

Visual Studio 有內建強大的效能診斷工具,能夠分析記憶體、CPU、GPU的使用量,當程需要效能調校或者不知道哪邊程式效率差,就可以使用效能診斷工具來幫你分析程式碼。

 

以下以Visual Studio Community 2013 版本為例:

先寫一段拿來測試的程式碼

static void Main(string[] args)
{
    Run1();
    Run2();     
    Run3(); 
}

private static Object thisLock = new Object();

private static void Run1() 
{
    Int64 balance = 0;
    var data = Enumerable.Range(0, 800)
    .AsParallel();

    data.ForAll(x =>
    {
        for (int i = 0; i < x; i++)
        {
            for (int j = 0; j < x; j++)
            {
                lock (thisLock)
                {
                    balance += j;
                }
            }
        }
    });

    Console.WriteLine("Run 1 Finish");

}

private static void Run2()
{
    Int64 balance = 0;
    var data = Enumerable.Range(0, 2500)
    .AsParallel();

    data.ForAll(x =>
    {
        for (int i = 0; i < x; i++)
        {
            for (int j = 0; j < x; j++)
            {
                lock (thisLock)
                {
                    balance += j;
                }
            }
        }
    });

    Console.WriteLine("Run 2 Finish");

}

private static void Run3()
{
    Int64 balance = 0;
    var data = Enumerable.Range(0, 100)
    .AsParallel();

    data.ForAll(x =>
    {
        for (int i = 0; i < x; i++)
        {
            for (int j = 0; j < x; j++)
            {
                lock (thisLock)
                {
                    balance += j;
                }
            }
        }
    });

    Console.WriteLine("Run 3 Finish");

}

Run1()、Run2()與Run3() 程式碼大同小異,只差在跑回圈的數字不同而已。

接下來就是開啟診斷工具

分析 > 效能及診斷

直接點選開始

CPU取樣(建議使用) ,然後直接按完成

Visual Studio 會開始做資料分析,分析完會出現以下畫面

接著點選紅色框框的地方

點選後,會切到函式詳細資料

然後會看到 Main 的總取樣是 39.9% , 而 Run2 就占了39%。

知道Run2 消耗這麼多CPU後,接下來點 紅色圈圈 Run2

就可以看到 Run2 () 消耗的時間花費在哪裡

Visual Studio 2013 效能診斷工具可以幫助你分析程式碼,數據就擺在那邊讓你看,不用自己猜測哪邊寫不好。  如此強大的功能,是免費的喔!!!  只是唯一的缺點就是.....偶爾會當掉=...=

 

 

一天一分享,身體好健康。

該追究的不是過去的原因,而是現在的目的。