[C#] interface与delegate的效能比较
2012-05-24 17:21
274 查看
前言
以前在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; } } }
相关文章推荐
- C# interface与delegate效能比较的深入解析
- new,virtual,override,interface,delegate,event-------------C#——方法实现总结
- C# 几种不同thread-safe counter 的作法效能比较
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
- CSharp(C#) 与 C 计算性能(效能)比较
- C# foreach,linq,delegate集合查询的性能比较
- C#中 foreach,linq,delegate集合查询的性能比较
- C# 委托的比较 delegate、Action、Func、predicate
- 比较C#中抽象类(abstract class)和接口(interface)的异同
- C#语法相比其它语言比较独特的地方(二)
- C# 委托(delegate)
- C#访问BitMap几种方法效率比较
- C#的委托(Delegate)和事件(Events)
- C#知识点总结系列:3、C#中Delegate和Event以及它们的区别
- .NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析
- c#中关于delegate、委托、事件之间的联系、关系
- C#中静态与非静态方法比较
- C# 集合性能比较(代码测试)
- C#中的代理(Delegate)
- C#与Java的比较