当前位置:  编程技术>c/c++/嵌入式

C# interface与delegate效能比较的深入解析

    来源: 互联网  发布时间:2014-10-17

    本文导语:  前言以前在Code Complete 2nd(代码大全2)这本书上看过说在像是C#这种类型语言中能不要用delegate就尽量不要用,多使用interface取代,以避免效能上的影响实践出真理,所以我就写了个小范例来测试我的硬件是2.66G 4核心CPU,内存4G 我不...

前言
以前在Code Complete 2nd(代码大全2)这本书上看过
说在像是C#这种类型语言中能不要用delegate就尽量不要用,多使用interface取代,以避免效能上的影响
实践出真理,所以我就写了个小范例来测试
我的硬件是2.66G 4核心CPU,内存4G

我不知道是不是电脑比较快,以及我写的函数太小的关系
次数到了10000000次才看到有影响



到了100000000次后看起来也是还好
总而分析,还是会有影响
需要高效运算或是在嵌入式中,应该还是要多注意一点
代码

代码如下:

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;
        }
    }
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.lang.reflect类modifier的类成员方法: interface定义及介绍
  • 百分求 驱动高手请进来libusb_claim_interface
  • java命名空间javax.lang.model.element枚举elementkind的类成员方法: interface定义及介绍
  • EJB的 Local Interface Access问题。
  • java命名空间javax.xml.ws.handler接口messagecontext成员方法: wsdl_interface定义参考
  • 即时聊天系统 InterFace
  • java命名空间javax.management类jmx的类成员方法: interface_class_name_field定义及介绍
  • 关于“虚基类”和“interface"
  • java命名空间java.security.interfaces接口rsakey的类成员方法: getmodulus定义及介绍
  • 关于Interfaces
  • java命名空间java.security.interfaces接口rsamultiprimeprivatecrtkey的类成员方法: getprimeq定义及介绍
  • interface 到底有什么用???实现接口,怎么实现??
  • java命名空间java.security.interfaces接口rsamultiprimeprivatecrtkey的类成员方法: getprimeexponentp定义及介绍
  • loopback interface是什么?
  • java命名空间java.security.interfaces接口rsaprivatecrtkey的类成员方法: getprimep定义及介绍
  • 機架式pc擁有12個網路chip如何得知封包由哪個interface出去的?
  • java命名空间java.security.interfaces接口rsaprivatecrtkey的类成员方法: getprimeexponentp定义及介绍
  • interfaces的extend???
  • java命名空间java.security.interfaces接口rsaprivatecrtkey的类成员方法: getcrtcoefficient定义及介绍
  • Mimic the iGoogle Interface
  • java命名空间java.security.interfaces接口rsaprivatecrtkey的类成员方法: getprimeq定义及介绍
  • 启动时遇到Bringing up interface eth0[failed]怎么回事


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3