如果我给我的程序添加扩展方法,我的程序性能会有多大的损失?
它的工作速度会变慢,还是加载速度会变慢?
谢谢。
发布于 2010-08-16 21:33:08
如果我将扩展方法添加到程序中,会对程序性能产生多大的影响?它的工作速度会变慢,还是加载速度会变慢?
不会影响性能。扩展方法是真正的静态方法。
发布于 2010-08-17 04:44:08
扩展方法只是应用于静态方法的语法糖。
从理论上讲,静态方法比非虚拟实例方法更快(不需要检查空this),而非虚拟实例方法又比虚拟实例方法更快(不需要查找实现来调用)。
从理论上讲,优化也可以消除这些差异。当涉及到扩展方法时,它在静态方面也被夸大了,因为对象可能会以一种需要null检查的方式来处理(无论是显式的还是隐式的)。
在实践中,无论扩展方法做什么,无论它是扩展还是实例,都有可能产生更大的影响。
发布于 2010-08-17 05:09:05
我在一个真正长时间运行的循环中使用一些整数扩展方法快速地对此进行了性能测试,发现在我测试的情况下,性能通常是相同的。当调试或运行未优化的程序集时,扩展方法的运行速度大约是我的控件用例的两倍,这是有意义的,因为调试器不能内联这些方法,并且必须跟踪调用堆栈等。
因此,在准备发布的程序集中,没有性能损失。
https://stackoverflow.com/questions/3493574
复制相似问题