Неиспользуемые свойства вызывают накладные расходы?

Предположим, у нас был сгенерированный класс с множеством избыточных методов доступа. Они просто аксессоры, они не поля. Они не называются нигде. Они просто сидят там, будучи излишними и безобразными.

Например:

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 и не вызывают прямых накладных расходов во время выполнения.

Метаданные для класса будут больше (вместе с размером сборки, как вы упомянули).

Вы можете получить косвенное влияние, если класс используется в каком-то коде, который требует много размышлений, также если код многократно отражает один и тот же класс, он, вероятно, сам по себе неверен.

Другие вопросы по тегам