c#类中私有方法、受保护方法、公共方法和内部方法的性能有什么不同吗?

本文关键字:方法 性能 什么 内部 有方法 受保护 | 更新日期: 2023-09-27 18:08:23

c#类中privateprotectedpublicinternal方法的性能有什么区别?我感兴趣的是,如果一个消耗更多的处理器时间或RAM。

c#类中私有方法、受保护方法、公共方法和内部方法的性能有什么不同吗?

我不知道正常调用有任何性能差异;当通过动态调用或反射访问时,更受限制的访问可能会花费更多的工作,因为可能需要更仔细地验证调用者。在普通的jit编译情况下,CLR可以只验证一次访问,然后认为是理所当然的。我猜想,对于更严格的访问,JIT编译(和IL验证)本身可能会稍微慢一些——但我很难相信这有什么意义。

这个绝对不应该是决定使用哪个可访问性的一个因素,即使在某种程度上有一些我没有意识到的微小的性能差异。如果您相信您可以通过使可访问性在您的设计中成为"自然"的可访问性之外的东西来获得性能优势,那么您一定应该对前后情况进行基准测试-我怀疑您将很难找到一个可以可靠地测量差异的真实情况。

同样的建议适用于所有类型的微优化:无论如何,这几乎都不是一个好主意,应该绝对只有在仔细测量的情况下才能进行。

私有、受保护或公共方法之间在性能上没有可测量的差异。

如果您关注优化,可能您应该尝试使您的瓶颈代码片段更"过程化"而不是面向对象。这只会带来小小的改善。