欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# interface與delegate效能比較的深入解析

 更新時(shí)間:2013年05月31日 10:53:28   作者:  
本篇文章是對(duì)C#中interface與delegate的效能比較進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
前言
以前在Code Complete 2nd(代碼大全2)這本書(shū)上看過(guò)
說(shuō)在像是C#這種類(lèi)型語(yǔ)言中能不要用delegate就盡量不要用,多使用interface取代,以避免效能上的影響
實(shí)踐出真理,所以我就寫(xiě)了個(gè)小范例來(lái)測(cè)試
我的硬件是2.66G 4核心CPU,內(nèi)存4G

我不知道是不是電腦比較快,以及我寫(xiě)的函數(shù)太小的關(guān)系
次數(shù)到了10000000次才看到有影響



到了100000000次后看起來(lái)也是還好
總而分析,還是會(huì)有影響
需要高效運(yùn)算或是在嵌入式中,應(yīng)該還是要多注意一點(diǎn)
代碼

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace Performance
{
    class Program
    {
        delegate int Add(int a, int b);
        static Add myDelegate;
        const int LOOP_COUNT = 100000000;
        static void Main(string[] args)
        {
            myDelegate = new Add(TestAdd);
            IOrz orz = new Orz();
            Stopwatch st = new Stopwatch();
            st.Start();
            for (int i = 0; i < LOOP_COUNT; i++)
            {
                int c = orz.DoIt(1, 2);
            }
            st.Stop();
            Console.WriteLine(" Call Interface Elapsed time:{0} ms", st.ElapsedMilliseconds);
            st.Reset();
            st.Start();
            for (int i = 0; i < LOOP_COUNT; i++)
            {
                int d = myDelegate(3, 5);
            }
            st.Stop();
            Console.WriteLine("Call Delegate Elapsed time :{0} ms", st.ElapsedMilliseconds);
            Console.ReadLine();
        }
        static int TestAdd(int a, int b)
        {
            int c = a + b;
            return c;
        }
    }
}

相關(guān)文章

最新評(píng)論