会实际去做测试是一件很好的事情,但是带着先入为主的观点去做测试就很容易忽略真正的问题。
从测试结果中最显而易见的事情应该是:
创建对象是一个成本比较高的事情。
这个代码是每次都新建一个delegate对象的,循环中平均每次耗时0.01157us。
然后将InRange的赋值语句移动到循环外边,循环中每次只是调用委托,平均耗时0.005406us。
最后去掉委托,直接调用函数,平均耗时0.002895us
每次新建一个delegate对象所花费的时间是不创建对象所花费的时间的一倍。
如果你进行更多的实验,你会得到更明确的结论:
大量创建托管对象是一件比较损耗性能的事情。
所以,这个实验告诉我们的结论应当是:
应尽量避免大量的创建托管对象。
和委托的关系并不大
因为在这个实验中很显然通过委托调用带来的性能损失,还不如创建委托对象所带来的性能损失。