如果我添加扩展方法,我的程序性能将多少钱?
它的工作速度较慢还是可能会降低负载?
谢谢。

有帮助吗?

解决方案

如果我添加扩展方法,我的程序性能将多少钱?它的工作速度较慢还是可能会降低负载?

不会有表现的打击。扩展方法是真正的静态方法。

其他提示

扩展方法只是句法糖应用于静态方法。

从理论上讲,静态方法比非虚拟实例方法快(无需检查null this)反过来,哪个比虚拟实例方法快(无需查找实现来调用)。

从理论上讲,优化可以摆脱这些差异。当涉及到扩展方法时,它的静态也被夸大了,因为无论如何无论如何,无论如何,对象可能会以null-check(无论是明确的还是对使用方式)进行处理的方式处理的。

在实践中,机会是,无论扩展方法所做的一切都会产生更多的影响,无论是扩展还是实例。

我在非常长的运行循环中使用一些整数扩展方法快速测试了这一点,发现在我测试的情况下,性能通常相同。当调试或运行未取代的组件时,扩展方法的运行速度是我的控制案例的两倍,这是有道理的,因为调试器无法嵌入这些方法,并且必须跟踪呼叫stack,等等。

因此,在准备释放的大会中,没有绩效罚款。

当然不会加载较慢,因为加载程序不取决于程序中的执行路径。

至于跑步速度较慢?仅测量扩展方法所需的时间和非扩展方法的一定程度。我怀疑即使实际上是可以测量的,这种差异也不会显着。

重要的考虑因素应始终是“扩展方法是否使我的代码更清晰,更易于理解和维护”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top