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

时间:2011-09-12 08:13:12

标签: c# performance class methods members

C#类中privateprotectedpublicinternal方法的效果有何不同?如果有人消耗更多的处理器时间或RAM,我很感兴趣。

2 个答案:

答案 0 :(得分:7)

我不是意识到正常调用的任何性能差异;当通过动态调用或反射进行访问时,更有限的访问可能会花费更多的工作,因为调用者可能需要更仔细地进行验证。在正常的JIT编译情况下,CLR只能验证一次访问权限,然后认为是理所当然的。我想JIT编译(和IL验证)本身可能会稍微慢一点,以便进行更严格的访问 - 但我发现很难相信它会很重要。

这应该绝对不是决定使用哪种可访问性的因素,即使某种方式存在一些我不知道的微小性能差异。如果您认为通过将可访问性设置为除您设计之外的“自然”之外的东西,您可能能够获得性能优势,那么您应该对之前/之后的案例进行基准测试 - 我怀疑您会很难找到一个现实世界的情况,差异是可靠的可衡量的。

同样的建议适用于所有类型的微优化:无论如何,它几乎从来都不是一个好主意,并且肯定只能在仔细测量中进行。

答案 1 :(得分:0)

私人,受保护或公共方法之间的性能不会有任何可衡量的差异。

如果你专注于优化,可能你应该尝试使你的瓶颈代码比面向对象更“程序化”。它会做很小的改进。