在循环中声明变量会损失更多的性能?

问题描述 投票:0回答:1

代码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。

我觉得编译器的优化功能很强大,谢谢你们,如果我的测试代码有问题,请给我一些建议!

c++ for-loop memory memory-management while-loop
1个回答
3
投票

作为经验法则,在编译器的情况下。优化 开启,如果你能想到通过做一个小的改变来加快一些代码的速度,比如你所做的改变,那么这类编译器的非常聪明的作者也可以。

当然,尽可能的保持变量的局部性,有助于优化策略。而且这也是更好的编程风格。

如果你对编译器是否做好了工作有任何怀疑,你可以随时检查生成的汇编。

© www.soinside.com 2019 - 2024. All rights reserved.