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 效能診斷工具可以幫助你分析程式碼,數據就擺在那邊讓你看,不用自己猜測哪邊寫不好。 如此強大的功能,是免費的喔!!! 只是唯一的缺點就是.....偶爾會當掉=...=
一天一分享,身體好健康。
該追究的不是過去的原因,而是現在的目的。