百科问答小站 logo
百科问答小站 font logo



C#委托的性能开销具体在哪里,有哪些使用指导? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

会实际去做测试是一件很好的事情,但是带着先入为主的观点去做测试就很容易忽略真正的问题


从测试结果中最显而易见的事情应该是:

创建对象是一个成本比较高的事情。



这个代码是每次都新建一个delegate对象的,循环中平均每次耗时0.01157us。
然后将InRange的赋值语句移动到循环外边,循环中每次只是调用委托,平均耗时0.005406us。
最后去掉委托,直接调用函数,平均耗时0.002895us

每次新建一个delegate对象所花费的时间是不创建对象所花费的时间的一倍。



如果你进行更多的实验,你会得到更明确的结论:

大量创建托管对象是一件比较损耗性能的事情。


所以,这个实验告诉我们的结论应当是:

应尽量避免大量的创建托管对象。


和委托的关系并不大


因为在这个实验中很显然通过委托调用带来的性能损失,还不如创建委托对象所带来的性能损失。




  

相关话题

  大一新生入学半个月,有比赛需要一个月造出红外循迹智能车,会C语言和c++,要怎么开始入门? 
  Visual Studio"从现有代码创建项目",这个功能可以用脚本实现吗? 
  C语言中for语句的赋初值用int i=1和i=1有什么区别? 
  为什么我写代码时总是手滑把main打成mian? 
  C语言和C++中,为什么malloc函数需要传入申请的内存大小,而free时候却不需要传大小呢? 
  现在快2022年了,c++为什么还要实现(.cpp)和声明(.h)分开? 
  c#有没有简洁的方法跳出外层循环,类似Java那样使用标记的方式? 
  编译器在遇到指向基类的指针时都会进行动态联编吗? 
  中国有哪些比较出名的C#大佬。? 
  C# 中在循环内定义变量可取吗? 

前一个讨论
黑客为什么不攻击淘宝?
下一个讨论
如何评价这幅图中对于女性贞操的观点?





© 2025-03-14 - tinynew.org. All Rights Reserved.
© 2025-03-14 - tinynew.org. 保留所有权利