Много ли ненужных переменных может вызвать проблемы с производительностью в C #? - PullRequest
8 голосов
/ 26 января 2012

У меня есть приложение на C # 4.0, и внутри этого приложения у меня много ненужных переменных.Как переменная _foo внутри кода ниже:

public string Foo() { 
    var _foo = "foo bar";
    return _foo;
}

Как я уже упоминал, подобные ситуации происходят внутри множества методов.

Будет ли много ненужных переменных (наподобие тех, которые я объяснил в этом случае) вызвать проблемы с производительностью в C #?

Редактировать:

Я неспрашивать любой совет, если я должен удалить их или нет.Мой вопрос все о влиянии производительности.На самом деле, приложение не написано мной, и я новичок в этом проекте.Я только видел и задавался вопросом, есть ли у этого перфект.эффект помимо того, что он влияет на качество кода.

Ответы [ 3 ]

25 голосов
/ 26 января 2012

Много ли ненужных переменных (наподобие тех, которые я объяснил в этом случае) может вызвать проблемы с производительностью в C #?

Нет, они не будут.

Компилятор достаточно умен, чтобы удалять все ненужные вещи при компиляции в режиме Release и оптимизировать ваш код до:

public string Foo()
{
    return "foo bar";
}

или, точнее, до:

.method public hidebysig instance string Foo() cil managed
{
    .maxstack 1
    .locals init (
        [0] string str)
    L_0000: ldstr "foo bar"
    L_0005: stloc.0 
    L_0006: ldloc.0 
    L_0007: ret 
}

, который по сравнению с аналогом режима отладки совершенно другой:

.method public hidebysig instance string Foo() cil managed
{
    .maxstack 1
    .locals init (
        [0] string _foo,
        [1] string CS$1$0000)
    L_0000: nop 
    L_0001: ldstr "foo bar"
    L_0006: stloc.0 
    L_0007: ldloc.0 
    L_0008: stloc.1 
    L_0009: br.s L_000b
    L_000b: ldloc.1 
    L_000c: ret 
}

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

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

1 голос
/ 26 января 2012

Если у вас нет заметных проблем с производительностью системы, вы никогда не должны кодировать / модифицировать для производительности.Наша цель как разработчика программного обеспечения - написать чистый, читаемый, элегантный код.Как сказал Дарин выше, компиляторы выполнят свою работу по оптимизации работы машины от нашего имени.

0 голосов
/ 26 мая 2017

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

Для дальнейшего чтения и справки, вы можете проверить:

https://msdn.microsoft.com/en-us/library/ms182278(v=vs.140).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...