Net 如何計算一段代碼的效率


在.Net 4.0以后的版本,提供了一個類,該類在 System.Diagnostics命名空間下,使用該類就可以計算出執行結果相同的兩端代碼的效率,在代碼優化上是很實用的。

泛型效率是高是低呢??我們來測試下,代碼如下:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            {
                Console.WriteLine("\r\n");
                System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
                watch.Start();
                for (int i = 0; i < 10000000; i++)
                {
                    ShowObj(123);
                }
               
                Console.WriteLine("object方法執行毫秒數"+watch.ElapsedMilliseconds);
                watch.Stop();
            }
            {
                System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
                watch.Start();
                for (int i = 0; i < 10000000; i++)
                {
                    ShowGeneric(123);
                }
                Console.WriteLine("泛型方法執行毫秒數"+watch.ElapsedMilliseconds);
                watch.Stop();
            }
            Console.Read();
        }
        public static void ShowObj(object obj) {
            string str = "123";
        }
        public static void ShowGeneric<T>(T t)
        {
            string str = "123";
        }
    }
     
}

  

 

 

 

經過上述執行,我們可以把我們程序框架里面的幫助類都改成泛型的。

這里簡要說下泛型的特點,C#泛型的幾個特點:

(1)如果實例化泛型類型的參數相同,那么JIT編譯器會重復使用該類型。
(2)C#的泛型類型可以應用於強大的反射技術。
(3)C#的性能高,我們知道ArrayList添加元素時都是object類型,如果添加一個值類型,就需要把它轉換為引用類型,當取出這個元素的時候又要將其轉換為值類型,這就需要裝箱和拆箱的操作,性能降低。而泛型無需類型的轉換操作。
(4)C#除可單獨聲明泛型類型(包括類與結構)外,也可在基類中包含泛型類型的聲明。但基類如果是泛型類,它的類型參數要么已實例化,要么來源子類(同樣是泛型類型)聲明的類型參數。
關於泛型特點的詳細解說:請看本人《自定義泛型那點事


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM