visual studio是個強大的集成開發環境,內置了程序性能診斷工具。下面通過兩段代碼進行介紹。
?


static void Main( string[] args){Test1();Test2();Console.ReadKey();}protected static void Test1(){Stopwatch sp = new Stopwatch();sp.Start();string str = "" ;for (int i = 0; i < 100; i++){for (int j = 0; j < 100; j++){str += "string append1= " ;str += i.ToString() + " ";str += "string append2= " ;str += j.ToString() + " ";}}sp.Stop();Console.WriteLine("Test1 Time={0}" , sp.Elapsed.ToString());}protected static void Test2(){Stopwatch sp = new Stopwatch();sp.Start();StringBuilder str = new StringBuilder();for (int i = 0; i < 100; i++){for (int j = 0; j < 100; j++){str.Append( "string append1= " );str.Append(i.ToString());str.Append( "string append2=" );str.Append(j.ToString());}}sp.Stop();Console.WriteLine("Test2 Time={0}" , sp.Elapsed.ToString());}
先運行一下查看運行結果如下:
兩個函數實現的功能都一樣,實現方式不一樣,效率卻完全不一樣,下面通過vs自帶的性能分析工具進行分析,可以分析出程序對cpu使用率和內存使用情況等,
本次以cpu測試為例。
注:本次測試用的是vs2013,在vs2010里為啟動性能向導。
?
從以上分析結果可以得出對函數內部具體代碼的的cpu使用情況,由此在實際開發中,可以針對某個代碼單獨拿出進行分析,以找出消耗cpu的地方,
加以改進從而提高程序的效率。
性能診斷工具還有不少,如微軟的CLR Profiler,還有WinDbg等,后續的博客會對這兩個工具作介紹。
?