объявление переменной в l oop будет стоить больше производительности? - PullRequest
0 голосов
/ 30 апреля 2020

код 1

while(1)
{
    int i = 0;
    //do something
}

код 2

int i = 0;
while(1)
{
    i = 0;
    //do something
}

Производительность этих двух кодов одинакова или код 1 дороже?

=== ================================================== ====================

очень впечатляющий вывод - мой тестовый код

class A {};

int main()
{
    int count = 0;
    int maxCount = 10000;
    clock_t check;

    check = clock();
    while(count < maxCount)
    {
    int i = 0;
    count++;
    }
    cout << clock() - check << endl;

    count = 0;
    int i = 0;

    check = clock();
    while(count < maxCount)
    {
    i = 0;
    count++;
    }
    cout << clock() - check << endl;

    check = clock();
    while(count < maxCount)
    {
    A a;
    count++;
    }
    cout << clock() - check << endl;

    check = clock();
    while(count < maxCount)
    {
    A* a = new A();
    count++;
    delete a;
    }
    cout << clock() - check << endl;
}

и каждый вывод равен 0.

Я думаю, что оптимизация компилятора очень мощная. спасибо за вас, ребята, и если мой тестовый код неверен, дайте мне несколько советов!

1 Ответ

3 голосов
/ 30 апреля 2020

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

Конечно, сохранение переменных как можно более локальными помогает оптимизировать стратегии. И это лучший стиль программирования.

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

...