14

C# 类中、private和方法的性能有什么不同吗?如果一个人消耗更多的处理器时间或RAM,我很感兴趣。protectedpublicinternal

4

2 回答 2

9

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

绝对不是决定使用哪种可访问性的因素,即使不知何故存在一些我不知道的微小性能差异。如果您相信您可以通过使可访问性成为您设计的“自然”之外的东西来获得性能优势,那么您绝对应该对之前/之后的情况进行基准测试 - 我怀疑您很难找到一个可以可靠地测量差异的实际情况。

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

于 2011-09-12T08:15:05.193 回答
0

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

如果您专注于优化,则可能您应该尝试使您的瓶颈代码更“程序化”而不是面向对象。它会做一些小的改进。

于 2011-09-12T09:06:39.210 回答