Разница в производительности при создании (пере) создании? - PullRequest
0 голосов
/ 22 октября 2011

Есть ли разница в производительности между этим:

int test;
void Update()
{
    test +=2;
}

и это:

void Update()
{
    int test;
    test +=2;
}

-

int main()
{
    while(true)
        Update();
}

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

Ответы [ 2 ]

1 голос
/ 22 октября 2011

Маловероятно, что существует разница в производительности между двумя фрагментами, только профилирование вашего кода может сказать достоверно, но есть важное функциональное отличие, которое вы должны учитывать здесь.

Если ваша переменная test нужна только внутри функции update(), тогда вы должны объявить ее внутри функции. Таким образом, переменная имеет ограниченную область видимости внутри функции. Время жизни такой локальной переменной ограничено областью, в которой она находится. Т.е. В теле функции до закрывающей скобки }.

Если вы вообще хотите, чтобы ваша переменная test поддерживала состояние при вызовах функций, то это может быть локальная статическая переменная, объявленная внутри функции.

Объявление test вне функции делает ее глобальной переменной. И он может быть доступен в любой функции в одном и том же файле. Будучи глобальной переменной, его время жизни продолжается до конца программы.

0 голосов
/ 22 октября 2011

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

Однако есть существенная функциональная разница. Второй пример практически бесполезен, так как test будет сбрасываться каждые Update. Чтобы избежать этого, вы можете объявить его как static int test, но вы, по сути, снова написали первый пример.

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

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