Неиспользуемые свойства вызывают накладные расходы?
Предположим, у нас был сгенерированный класс с множеством избыточных методов доступа. Они просто аксессоры, они не поля. Они не называются нигде. Они просто сидят там, будучи излишними и безобразными.
Например:
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. Я ожидаю, что будут нулевые штрафы за время выполнения.
Это вызывает другие накладные расходы? Даже крошечные накладные расходы любого рода?
1 ответ
Маловероятно иметь какие-либо измеримые накладные расходы во время выполнения. В любом случае, так как это вопрос производительности - измерьте свое использование и примите решение для своего случая, если сомневаетесь.
Несвязанные методы не компилируются JIT и не вызывают прямых накладных расходов во время выполнения.
Метаданные для класса будут больше (вместе с размером сборки, как вы упомянули).
Вы можете получить косвенное влияние, если класс используется в каком-то коде, который требует много размышлений, также если код многократно отражает один и тот же класс, он, вероятно, сам по себе неверен.