未使用的属性是否会导致开销
本文关键字:开销 是否 属性 未使用 | 更新日期: 2023-09-27 18:33:35
假设我们有一个生成的类,其中包含许多冗余访问器。 它们只是访问器,它们不是字段。 他们没有在任何地方被召唤。 他们只是坐在那里多余和丑陋。
例如:
public class ContrivedExample
{
public int ThisOneIsUsed { get; set; }
public int ThisOneIsNeverCalled0 { get { /* Large amounts of logic go here, but is never called. */ } }
public int ThisOneIsNeverCalled1 { get { /* Large amounts of logic go here, but is never called. */ } }
public int ThisOneIsNeverCalled2 { get { /* Large amounts of logic go here, but is never called. */ } }
//...
public int ThisOneIsNeverCalled99 { get { /* Large amounts of logic go here, but is never called.*/ } }
}
ContrivedExample c = new ContrivedExample() { ThisOneIsUsed = 5; }
我能想到的唯一开销是它会使.DLL更大。 我希望运行时惩罚为零。
这是否会导致任何其他开销? 哪怕是一丝不苟的开销?
它不太可能有任何可测量的运行时开销。无论如何,由于这是性能问题 - 衡量您的使用情况,并在有疑问时为您的情况做出决定。
未引用的方法不会被 JIT 编译,也不会导致直接的运行时开销。
类的元数据将更大(以及您提到的程序集大小)。
如果在某些涉及大量反射的代码中使用类,则可能会产生间接影响,如果代码在同一类上重复反射,则它本身可能是错误的。