1
3
根据Don Box的一本书(Essential.NET第1卷),与在类上调用函数相比,在接口上调用函数的效果是一条机器指令,因为还有一条间接指令。这意味着在2 GHz处理器上,调用接口方法比类方法慢0.000000000005秒。 这是指.NET版本1的实现(我有本书的旧版本)。我不确定新版本是否会有很大的变化,或者它是如何应用于单声道的,但我绝对不会假设有戏剧性的效果。 正如你所看到的,在现代计算机上,这种影响应该是可以忽略的,除非在罕见的情况下,你必须每纳秒猎取一次。 |
2
1
简短的回答:这一点也不会有什么不同。 更长的答案是:几乎可以肯定,这一点都没有区别。唯一真正的性能差异应该是通过接口调用的方法不能被内联,所以任何在原始类上内联的方法都将与接口一起变慢。不过,我们每次通话只会多说几纳秒,所以 如果 您在类上有内联方法,并且 如果 他们被打了上百万次电话,那么你可能会看到明显的区别。但是,如果您有这样一种方法,它是应用程序性能的限制因素,那么性能爱好者肯定已经测量过了,并且能够告诉您。他们不会吗? |
3
1
接口方法调用的唯一区别在于 放心 是一个虚拟方法调用。对于直接类实例方法调用,它是可选的,这取决于您是否声明它为虚拟的。 实际上,它没有任何区别,vb.net编译器使用与C编译器相同的技巧。即使方法不是虚拟的,它也会进行间接调用,这对于隐式的空引用检查很有用。只有静态方法调用可能更便宜。 没必要担心这个。 |
Karl · 如何引发PrintPage的事件? 2 年前 |
Daniel · LINQ从列表的dataTable中提取部分匹配 2 年前 |
limelatte · 如何在datagridview中屏蔽特定列? 2 年前 |
Orsi · 选择嵌套列表的最大值和最小值。网 2 年前 |
D T · 如何为Excel Com设置公式? 2 年前 |
Lenin · 将数组中的每个元素与另一个数组中的相应元素相乘 2 年前 |