2012-05-09 6 views
3

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

Например:

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 больше. Я ожидаю, что будут штрафные санкции в течение времени исполнения.

Означает ли это причинение каких-либо других накладных расходов? Даже крошечные накладные расходы любого рода?

+0

Как просто удалить код, который не используется? Зачем все это делать? –

+0

Возможный дубликат [Performance overhead для свойств в .NET] (http://stackoverflow.com/questions/3264833/performance-overhead-for-properties-in-net) – Alain

+0

@Ed Я могу удалить его. Беда в том, что она сгенерирована, поэтому, скорее всего, скоро вернется. Кроме того, у меня нет терпения, чтобы читать, хотя каждый из них и решить, какие из них нужны, а какие нет. Кроме того, это разрушит мой ContrivedExample. ;-) –

ответ

7

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

Непринятые методы не скомпилируются JIT и не накладывают на них прямую служебную информацию.

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

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

+2

На этом примечании любое отражение, сделанное в классе, было бы хуже. – Alain

+0

Спасибо. Я даже не подумал об этом. –