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

Vad*_*dim 12 c# methods performance class members

有没有关于任何性能差异private,protected,publicinternal在C#类的方法呢?如果一个人消耗更多的处理器时间或RAM,我很感兴趣.

Jon*_*eet 9

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

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

对于各种微观优化,同样的建议也是如此:无论如何,它几乎从来都不是一个好主意,绝对应该只在仔细测量中进行.

  • 私有方法可能不会被JIT引擎更积极地优化(内联,例如)? (2认同)